Python集合与兴趣

2024-04-19 02:13:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是python2.5.4。从这里:Python -Intersection of multiple lists?

我有这个:

def intersect(*d):
    sets = iter(map(set, d))
    result = sets.next()
    for s in sets:
        result = result.intersection(s)
    return result

以下工作如预期:

^{2}$

但是,我有一些东西看起来更像以下:

d=[ [1,2,3,4], [2,3,4], [3,4,5,6,7] ]

如果我这样称呼它:

intersect(d)

我得到:

TypeError: list objects are unhashable

如何将上面的d转换为intersect()可以接受的东西?在


Tags: ofinmapfordefsetsresultmultiple
3条回答

下面是另一种实现方法:

d = [ [1,2,3,4], [2,3,4], [3,4,5,6,7] ]

reduce((lambda x, y: x & y), map(set, d))

或者

^{pr2}$

这在2.5和以前的版本中也有效。在

您需要将列表的内容作为单独的参数传递:

intersect(*d)

否则,整个列表被用作一个集合。{{{1>用一个参数来表示的函数。在

马蒂恩的回答是正确的。我想用一种更简单有效的方式来补充:

s = set(d[0]).intersection(*d[1:])

示例:

^{pr2}$

免责声明这是在Python2.7上测试的。我不知道2.5

相关问题 更多 >