【发布时间】:2014-01-20 09:15:54
【问题描述】:
据我了解,向set 添加元素不会返回任何内容。
例如:
>>> s=set([1,2,3])
>>> s.add(1)
>>> b = s.add(1)
>>> b
>>> b = s.add(5)
>>> b
>>> print b
None
>>> b = s.add(5)
>>> print b
None
但我很困惑remove duplicates of a list while preserving order 的这个函数是如何工作的:
def f7(seq):
seen = set()
seen_add = seen.add
return [ x for x in seq if x not in seen and not seen_add(x)]
not seen_add(x) 无论我是否添加重复项,都始终返回 true。
唯一真正的检查是如果x not in seen,因为如果失败,它将不会执行not see_add(x)。
这是我的理解还是我遗漏了什么?
但是,在这里,not seen_add(1) 如果我添加重复元素或唯一元素,则返回 true。
这很令人费解,所以这里的not 只是做空检查吗?但是seen_add() 没有返回一个集合来进行empty 检查。以及为什么seen_add(2) 不返回任何东西,但not seen_add(1) 返回boolean True
>>> seen=set()
>>> seen_add=seen.add
>>> seen_add(1)
>>> seen
set([1])
>>> seen.add(2)
>>> seen
set([1, 2])
>>> not seen_add(1)
True
>>> not seen_add(4)
True
【问题讨论】:
标签: python list function set add