>>> inverseIndex={'p':{1,2,3},'a':{2,3,4},'v':{5,6,7}}
>>> query={'p','a','v'}
>>> s=[inverseIndex[s] for s in query]
>>> s
[{2, 3, 4}, {1, 2, 3}, {5, 6, 7}]
>>> [ s[len(s)-1].update(s[i]) for i in range(len(s)-1) ]
[None, None]
为什么代码段会产生[None,None]
作为输出?
我期待[{2, 3, 4}, {1, 2, 3}, {1,2,3,4,5,6,7}]
。
答案 0 :(得分:2)
.update()
编辑了该套装。它不返回正在更新的集合。事实上,它不会返回任何。不返回任何内容的函数默认返回None
。在这里,你最好使用正常的for循环:
for i in range(len(s)-1):
s[len(s)-1].update(s[i])
此外,您可以将for循环缩小到:
>>> for i in s[:-1]:
... s[-1].update(i)
...
>>> s
[set([2, 3, 4]), set([1, 2, 3]), set([1, 2, 3, 4, 5, 6, 7])]
首先对列表进行切片,以便遍历每个元素,但最后一个元素。然后,我们用列表中的每个其他集更新最后一个。整个语法称为Python Slice Notation。
答案 1 :(得分:0)
update
返回None(Python的无效函数方式,没有ruturn值)。因此,列表中的值都是None。