解释此Python for循环中的数学

时间:2018-07-23 23:30:54

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

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

在类似这样的列表迭代中,我还没有找到关于-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 个答案:

答案 0 :(得分:2)

请阅读完整的答案,如果由于我的输入顺序而感到困惑,对此感到很抱歉(即,在阅读下一段之前,您可能应该阅读列表索引)。

对于您拥有的代码,它将遍历从列表的第0个索引一直到倒数第二个的每个元素。它具有“ -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_list 1将访问第二个元素,依此类推。

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

资源

您可能会发现,link可以帮助您使用列表索引,尽管它也涵盖了稍微复杂一些的拼接。

还有一个类似的问题,here对您的问题的回答略好一些。