Python 中列表中等效项的表示法

Notation for equivalent items in a list in Python

我有两个列表

circles_plotted = [1]
circles_next_plotted = [1]

每次绘制圆时,数字都会附加到列表 circles_plotted 中。但是,每个列表中的 和 item 的正确表示法是等价的吗? (这将在 if 语句中):

(item in circles_next_plotted)==(item in circles_plotted)

要检查列表是否相等,您可以使用 ==。如果元素的位置不同,您可以检查排序列表是否相等:

li1 = [1, 2, 3]
li2 = [1, 2, 3]

print(li1 == li2)  # True

li3 = [3, 2, 1]
li4 = [1, 2, 3]

print(li3 == li4)  # False
print(sorted(li3) == sorted(li4))  # True

也可以检查li3和li4元素的多重集是否相等:

import collections

li3 = [3, 2, 1]
li4 = [1, 2, 3]

print(collections.Counter(li3) == collections.Counter(li4))  # True

符号不正确。

(item in circles_next_plotted)==(item in circles_plotted)

是 Python:name 'item' is not defined 中的 NameError

可能的意思是

>>> (item for item in circles_next_plotted)==(item for item in circles_plotted)
False

这是因为(item for item in circles_next_plotted)是一个生成器表达式,两个生成器是两个不同的对象,因此不相等。

>>> (item for item in circles_next_plotted)
<generator object <genexpr> at 0x000000D50AF46BF8>
>>> (item for item in circles_plotted)    
<generator object <genexpr> at 0x000000D50AF46CA8>

要比较列表,您应该使用 == 运算符进行简单比较,该运算符已针对列表实现,以执行每个项目比较而不是对象身份检查:

>>> circles_next_plotted==circles_plotted
True