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