1

我有一个元素列表:

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 中的大部分值

4

1 回答 1

4

使用集合,您可以查看交叉点的大小...

 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 现在删除的答案中被盗

于 2013-06-06T13:56:59.893 回答