在Python中比较元组
我有一段代码:
while current is not problem.getStartState():
print "Current: ", current, "Start: ", problem.getStartState()
但不知道为什么,这段代码的比较部分运行得不好,你可以在下面的输出中看到:
Current: (3, 5, 0, 0, 0, 0) Start: (4, 5, 0, 0, 0, 0)
Current: (4, 5, 0, 0, 0, 0) Start: (4, 5, 0, 0, 0, 0)
你会发现,尽管当前的值和 getStartState() 的值是一样的,它还是进入了 while 循环。而且,当它是一个包含两个字段的元组(x,y)时,之前是正常工作的。
我哪里出错了呢?谢谢!
3 个回答
-1
is 在这种情况下不是正确的检查方法。要比较两个元组,只需使用 != 或 ==。
例如,可以这样解决这个问题:
while current != problem.getStartState():
print "Current: ", current, "Start: ", problem.getStartState()
谢谢,
2
while current != problem.getStartState():
print "Current: ", current, "Start: ", problem.getStartState()
is
是用来判断两个对象是否是同一个对象的比较器。在你的情况下,你需要的是一个判断两个对象是否相等(或者不相等)的操作符,也就是比较它们的值是否相同。
5
is
用来检查两个东西是不是同一个东西,而不是它们的内容是否相同。你应该用 current != problem.getStartState()
来比较它们的内容。
有一种用法叫 is (not) None
,这个用法有效是因为 None
是唯一的一个值。除非你真的想这样做,否则不要把这个用法用在其他类型上!