在Python中比较元组

0 投票
3 回答
2562 浏览
提问于 2025-04-17 08:42

我有一段代码:

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 是唯一的一个值。除非你真的想这样做,否则不要把这个用法用在其他类型上!

撰写回答