我有一个元素列表:
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得到最大交集的iterable:
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 现已删除的答案中窃取
我是一名优秀的程序员,十分优秀!