python - 列表相同但不被视为相等?

标签 python list python-2.7 equality

Python 新手遇到相等性测试问题。我有一个列表列表,states[];每个状态包含 x,在这种特定情况下 x=3, bool 值。在我的程序中,我生成了一个 bool 值列表,其中前三个对应于 state[i]。我循环遍历状态列表以测试是否相等(其中一个肯定是正确的,因为所有可能的 bool 排列都在状态中,但从未检测到相等。不知道为什么,这是我修改的一些代码来测试它:

 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'

或者在旅途中将您的元组转换为列表,以进行比较:

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 - 列表相同但不被视为相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33808011/

相关文章:

python - 使用 sklearn columntransfromer 时解压错误

list - 如何在 Haskell 中重构列表?

python - pygccxml 在 python 3.0+ 或 Python 2.7+ 上?

python - 将表情符号视为正则表达式中的一个字符

mysql - Python : df. to_sql with OperationalError 1046, 'No database selected and OperationalError 2005, "Unknown MySQL server hos

python - 将 ScreeManager 与 Kivy- 按钮布局一起使用时的问题不再有效

python - Matplotlib - 如何在极坐标中绘制流线?

python - 使用 property() 和 @property 定义的属性

C++ 列表随机访问

python - 如何在列表字典中查找重复出现的字符串组(顺序无关紧要)?