Python – 前 K 个唯一元素
有时,在使用Python列表时,我们可能会遇到需要提取前 K 个唯一元素的问题。这意味着如果它们也出现在前 K 个元素中,我们需要提取它们。这基本上可以使前 K 个唯一元素的数量超过 K。这种问题可以在日常编程中得到应用。让我们讨论可以执行此任务的某些方式。
Input : test_list = [6, 7, 6, 7], K = 2
Output : [6, 7]
Input : test_list = [3, 4, 5, 7], K = 3
Output : [3, 4, 5]
方法#1:使用循环
这是可以执行此任务的蛮力方式。在此,我们通过保持计数器和存储列表来比较以前的事件来执行获取元素的任务。
# Python3 code to demonstrate working of
# First K unique elements
# Using loop
# initializing list
test_list = [6, 7, 6, 7, 8, 3, 9, 11]
# printing original list
print("The original list is : " + str(test_list))
# initializing K
K = 4
# First K unique elements
# Using loop
store = []
res = []
cnt = 0
for ele in test_list:
if ele not in store:
cnt = cnt + 1
store.append(ele)
res.append(ele)
if cnt >= K :
break
# printing result
print("The extracted elements : " + str(res))
输出 :
The original list is : [6, 7, 6, 7, 8, 3, 9, 11]
The extracted elements : [6, 7, 6, 7, 8, 3]
方法 #2:使用set() + filter() + lambda
上述功能的组合可以用来解决这个问题。在此,我们使用 set 执行创建查找列表的任务,filter() + lambda 用于检查列表中的值。
# Python3 code to demonstrate working of
# First K unique elements
# Using set() + filter() + lambda
# initializing list
test_list = [6, 7, 6, 7, 8, 3, 9, 11]
# printing original list
print("The original list is : " + str(test_list))
# initializing K
K = 4
# First K unique elements
# Using set() + filter() + lambda
store = set(list({ele for ele in test_list})[:K])
res = list(filter(lambda ele: ele in store, test_list))
# printing result
print("The extracted elements : " + str(res))
输出 :
The original list is : [6, 7, 6, 7, 8, 3, 9, 11]
The extracted elements : [6, 7, 6, 7, 8, 3]