列表是相同的但不被认为是平等的?

Ber*_*y24 6 python equality list python-2.7

Python的新手遇到测试平等的问题.我有一个列表列表,州[]; 每个状态包含x,在此特定情况下x = 3,布尔值.在我的程序中,我生成一个布尔值列表,其中前三个对应于状态[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'
Run Code Online (Sandbox Code Playgroud)

在这种情况下,propisitons的长度是3.我从这段代码得到的输出是:

[True, True, True]
(True, True, True)
False
Run Code Online (Sandbox Code Playgroud)

我猜这与括号中的差异有关?与状态[0]是列表中的列表这一事实有什么关系?干杯.

And*_* H. 9

您正在将元组 (True, True, True)列表进行比较 [True, True, True]

当然他们是不同的.

试试您铸造listtuple上这去,来比较:

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'
Run Code Online (Sandbox Code Playgroud)

或者将你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'
Run Code Online (Sandbox Code Playgroud)

输出:

[True, True, True]
(True, True, True)
True
Run Code Online (Sandbox Code Playgroud)