Python – 从列表中提取元组超集
有时,在使用Python元组时,我们可能会遇到需要提取所有元组的问题,这些元组包含目标元组中的所有元素。这个问题可以应用在 Web 开发等领域。让我们讨论一下可以解决这个问题的某种方法。
Input :
test_list = [(5, 6, 6), (4, 2, 7), (9, 6, 5, 6)]
test_tuple = (6, 6)
Output : [(5, 6, 6), (9, 6, 5, 6)]
Input :
test_list = [(5, 6, 6), (4, 2, 6), (9, 6, 5, 6)]
test_tuple = (6, )
Output : [(5, 6, 6), (4, 2, 6), (9, 6, 5, 6)]
方法:使用Counter() + list comprehension + all()
上述功能的组合可以用来解决这个问题。在此,我们使用 Counter() 执行计数任务。 all() 用于检查所有元素是否构成子集,列表推导用于将所有逻辑绑定在一个块中。
# Python3 code to demonstrate working of
# Extract tuple supersets from List
# Using all() + list comprehension + Counter
from collections import Counter
# initializing list
test_list = [(5, 6, 8), (4, 2, 7), (9, 6, 5, 6)]
# printing original list
print("The original list is : " + str(test_list))
# initializing tuple
test_tup = (6, 6, 5)
# Extract tuple supersets from List
# Using all() + list comprehension + Counter
res = [sub for sub in test_list if
all(Counter(sub)[x] >= Counter(test_tup)[x]
for x in Counter(test_tup))]
# printing result
print("The superset tuples : " + str(res))
输出 :
The original list is : [(5, 6, 8), (4, 2, 7), (9, 6, 5, 6)]
The superset tuples : [(9, 6, 5, 6)]