列表相同但不被视为相等?
Lists are the same but not considered equal?
Python 的新手在测试相等性时遇到问题。我有一个列表列表,states[];每个状态包含 x,在这种特定情况下 x=3,布尔值。在我的程序中,我生成了一个布尔值列表,其中前三个对应于 state[i]。我循环遍历状态列表以测试是否相等(其中一个肯定是正确的,因为所有可能的布尔排列都在状态中,但从未检测到相等。不知道为什么,这是我修改的一些代码来测试它:
temp1 = []
for boolean in aggregate:
temp1.append(boolean)
if len(temp1) == len(propositions):
break
print temp1
print states[0]
if temp1 == states[0]:
print 'True'
else:
print 'False'
在这种情况下,propisitons 的长度是 3。我从这段代码得到的输出是:
[True, True, True]
(True, True, True)
False
我猜这与括号的不同有关?与 states[0] 是列表中的列表这一事实有关吗?干杯。
您正在比较 元组 (True, True, True)
与 列表 [True, True, True]
当然不一样了。
尝试在旅途中将 list
转换为 tuple
,以进行比较:
temp1 = []
for boolean in aggregate:
temp1.append(boolean)
if len(temp1) == len(propositions):
break
print temp1
print states[0]
if tuple(temp1) == states[0]:
print 'True'
else:
print 'False'
或者在旅途中将 tuple
转换为 list
,以进行比较:
temp1 = []
for boolean in aggregate:
temp1.append(boolean)
if len(temp1) == len(propositions):
break
print temp1
print states[0]
if temp1 == list(states[0]):
print 'True'
else:
print 'False'
输出:
[True, True, True]
(True, True, True)
True
Python 的新手在测试相等性时遇到问题。我有一个列表列表,states[];每个状态包含 x,在这种特定情况下 x=3,布尔值。在我的程序中,我生成了一个布尔值列表,其中前三个对应于 state[i]。我循环遍历状态列表以测试是否相等(其中一个肯定是正确的,因为所有可能的布尔排列都在状态中,但从未检测到相等。不知道为什么,这是我修改的一些代码来测试它:
temp1 = []
for boolean in aggregate:
temp1.append(boolean)
if len(temp1) == len(propositions):
break
print temp1
print states[0]
if temp1 == states[0]:
print 'True'
else:
print 'False'
在这种情况下,propisitons 的长度是 3。我从这段代码得到的输出是:
[True, True, True]
(True, True, True)
False
我猜这与括号的不同有关?与 states[0] 是列表中的列表这一事实有关吗?干杯。
您正在比较 元组 (True, True, True)
与 列表 [True, True, True]
当然不一样了。
尝试在旅途中将 list
转换为 tuple
,以进行比较:
temp1 = []
for boolean in aggregate:
temp1.append(boolean)
if len(temp1) == len(propositions):
break
print temp1
print states[0]
if tuple(temp1) == states[0]:
print 'True'
else:
print 'False'
或者在旅途中将 tuple
转换为 list
,以进行比较:
temp1 = []
for boolean in aggregate:
temp1.append(boolean)
if len(temp1) == len(propositions):
break
print temp1
print states[0]
if temp1 == list(states[0]):
print 'True'
else:
print 'False'
输出:
[True, True, True]
(True, True, True)
True