【问题标题】:Why is this iteration not updating the count?为什么此迭代不更新计数?
【发布时间】:2018-07-01 10:03:03
【问题描述】:

我正在编写一个函数,它将两个字符串作为参数,将它们转换为列表,然后返回两个字符串不同位置的索引:

def ss(line1,line2):
    count = 0
    list1 = line1.split()
    list2 = line2.split()
    for word in list1:
        if word is not list2[count]:
            return count
        else:
            count += 1

ss("Why is this not working?", "Why is this not working?")

我得到的输出是我的计数是我最初设置的值(例如,“0”)。据我所知,它应该是更新计数,然后重新遍历列表以比较下一个索引?

对于 for 循环的工作原理,我有什么不明白的地方?

谢谢。

【问题讨论】:

标签: python-3.x


【解决方案1】:

问题是您使用的是!= 而不是is not

解释

  • Python 中的is 关键字比较对象身份。 Python 中的每个字符串都是它自己独立的对象,因此,它有自己独立的身份。因此,当您将 is 关键字与两个字符串一起使用时,它不会检查实际内容。

  • 但是,要比较对象或变量的内容,您可以使用返回 True 或 False 的 ==!=

我希望这个答案对您有所帮助,如果您有任何其他问题,请随时在下面发表评论!

【讨论】:

  • 没有那么简单:see this answer。但当然你的建议是完全正确的。 +1
  • 有趣的是,我注意到在测试我最初包含的一些代码时。感谢您提供澄清。
猜你喜欢
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 2015-02-11
  • 2012-01-31
  • 1970-01-01
相关资源
最近更新 更多