我遇到了以下代码以从列表中删除重复项:
seen = set(); print [i for i in list if i not in seen and not seen.add(i)]
我无法理解这部分代码到底是什么“ and not seen.add(i) ”,因为help(set.add)给出了以下解释:
add(...)
Add an element to a set.
This has no effect if the element is already present.
期待您的帮助理解它
列表推导迭代原始/输入列表的值。当且仅当它还没有被看到时,我们希望将一个值添加到新/输出列表中,因此是条件表达式
if i not in seen
。当新值添加到新/输出列表时,seen
必须更新集合,因此seen.add(i)
函数调用。但是,该set.add()
方法返回None
,其计算结果为False
。因此not
添加了运算符,因此not seen.add(i)
始终返回True
。