【问题标题】:Interpreting the math in this Python for loop在这个 Python for 循环中解释数学
【发布时间】:2018-12-31 11:26:55
【问题描述】:

这绝对是一个新手问题,但是困扰了我很久。

对于像这样的列表迭代中的 -1 和 +1,我还没有找到可读的解释:

   # check for adjacent elements that are equal
for i in range(len(s)-1):
    if s[i] == s[i+1]:
        return True
return False

关于上下文,代码来自这里:

http://greenteapress.com/thinkpython2/code/birthday.py

我不完全理解 for 循环中 -1 的用途。我认为 +1 表示“如果此有序列表中的任何元素与列表中的下一个元素相同,则返回 True”。

感谢您的澄清。

【问题讨论】:

  • -1 存在,否则当您到达最后一个循环并尝试访问i+1 时,它会产生IndexError+1 表示您的想法
  • 手动或使用print 语句跟踪执行。完成此操作后,请告诉我们您不了解循环如何处理限制的地方。

标签: python python-3.x python-2.7 indexing


【解决方案1】:

请阅读完整的答案,如果由于我输入的顺序而使这个答案有点混乱,我很抱歉(即您可能应该在阅读以下段落之前阅读列表索引)。

对于您拥有的代码,它将遍历从列表的第 0 个索引一直到倒数第 2 个的每个元素。它有一个“-1”,因为最后一个元素没有相邻的索引。因此,如果它上升到列表中最后一个元素的索引,当它试图找到 s[i+1] 时,它会出错,因为 s[i] 之后没有元素。

您说 s[i+1] 将访问 s[i] 之后的元素是正确的。

列出索引

列表索引从 0 开始。所以:

[1,2,3] # Will have indexes:
#0 1 2 (They line up)

my_list[0] 将访问第一个元素,my_list1 将访问第二个元素,依此类推。

但是,len(my_list) 仍然会返回 3,即使 my_list[3] 会导致错误,因为它只会上升到 my_list2

资源

您可能会发现这个link 将帮助您处理列表索引,尽管它也涵盖了稍微复杂一些的拼接。

还有一个类似的问题可以更好地解决您的问题here

【讨论】:

    猜你喜欢
    • 2023-01-07
    • 2019-10-21
    • 1970-01-01
    • 2022-07-07
    • 2016-05-08
    • 1970-01-01
    • 2013-08-17
    • 2020-06-06
    • 2010-11-04
    相关资源
    最近更新 更多