这绝对是一个新手问题,但是困扰了我很长时间。
在类似这样的列表迭代中,我还没有找到关于-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”。
感谢您的澄清。
答案 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对您的问题的回答略好一些。