我有一个元素列表:
x = [1,3,5,7,9]
y = [2,4,6,8,0]
现在我想执行一个操作,它给我一个列表,其中存在第三个列表 z 中的“大部分”元素:
z = [2,3,5,7] #primes
我想这样做,以返回 z 中包含“大部分”项目的列表,而不是 z 中包含任何元素的列表。
如果列表不可能,我也准备好使用元组或集合......
编辑 :
样本:
mostOf(z) -> x
因为 x 包含 z 中的大部分值
使用集合,您可以查看交叉点的大小...
zset = set(z)
if len(zset.intersection(x)) > len(zset.intersection(y)):
...
如果您有一个可迭代的列表要检查:
iterable = (x,y)
您可以从1获得具有最大交集的可迭代对象:
def cmp_key(lst):
itersect_size = len(zset.intersection(lst))
return intersect_size,-len(lst)
list_with_biggest_intersection = max(iterable,key = cmp_key)
1从 Jamylak 现在删除的答案中被盗