如何在Python的for循环中正确使用类似array[i+1]的索引写法?
问题原因
你的Python代码报错核心是列表下标越界:当循环变量i取到列表最后一个索引时,i+1超出了列表的合法下标范围,Python不允许直接访问不存在的列表元素,会抛出索引错误。
另外你当前的循环起始值设为1,还漏掉了第一个元素和第二个元素的配对判断,和原JavaScript逻辑不一致。
正确实现方案
写法1:限制循环范围(推荐,性能更高)
直接控制i的最大取值为列表长度减2,保证i+1永远在合法下标范围内,和原逻辑效果完全一致:
b = [10, 20, 3, 4, 5, 30, 44, 90, 100] pair_num = 0 for i in range(len(b) - 1): if b[i] % 10 == 0 and b[i+1] % 10 == 0: pair_num += 1 print(pair_num)
写法2:完全对齐原JS逻辑
如果要和你原JS的写法(遍历所有下标,越界时自动跳过计数)完全对齐,可以加一层下标合法性判断:
b = [10, 20, 3, 4, 5, 30, 44, 90, 100] pair_num = 0 for i in range(len(b)): if b[i] % 10 == 0: # 先判断i+1是否在合法范围内,再取值判断 if i + 1 < len(b) and b[i+1] % 10 == 0: pair_num += 1 print(pair_num)
两种写法的运行结果都是2,和原JavaScript代码的执行结果完全一致。
内容的提问来源于stack exchange,提问作者Kate
相关产品推荐
相关产品推荐

