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
我有两个列表
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