我使用的是Python 2.5.4.从这里:Python - 多个列表的交叉?
我有这个:
def intersect(*d):
sets = iter(map(set, d))
result = sets.next()
for s in sets:
result = result.intersection(s)
return result
Run Code Online (Sandbox Code Playgroud)
以下按预期工作:
intersect([1,2,3,4], [2,3,4], [3,4,5,6,7])
Run Code Online (Sandbox Code Playgroud)
但是,我有一些看起来更像是以下内容:
d=[ [1,2,3,4], [2,3,4], [3,4,5,6,7] ]
Run Code Online (Sandbox Code Playgroud)
如果我称之为:
intersect(d)
Run Code Online (Sandbox Code Playgroud)
我明白了:
TypeError: list objects are unhashable
Run Code Online (Sandbox Code Playgroud)
如何将d上述内容转化为intersect()可以采取的措施?
Mar*_*ers 10
您需要将列表的内容作为单独的参数传递:
intersect(*d)
Run Code Online (Sandbox Code Playgroud)
否则会发生整个列表被用作一个集合.该*d语法指示要使用Python d作为参数传递给函数的序列,而不是使用完整d列表,只有一个参数.
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |