我有以下python代码:
raw_list = reminders_context['data']['reminder_list']
此声明正常工作并获取我想要的所需信息。
下面的代码给出了错误列表索引超出范围但是for循环的内部工作原理,例如。[我显然用'i'代替数字,然后得到列表项的前10个字符[:10]],在pdb模式下设置跟踪时工作正常。
raw_list[i]['created'][:10] == raw_list[i + 1]['created'][:10]
出错的代码:
for i in range(len(raw_list)):
if raw_list[i]['created'][:10] == raw_list[i + 1]['created'][:10]:
del raw_list[i + 1]
else:
pass
如何更改它以便我不会收到错误?
我已经看到了迭代时我的列表在for循环中如何减少的一些内容,但我根本不知道如何在我的代码中实现它。
我所指的文章就在这里:
答案 0 :(得分:0)
如何改变:
for i in range(len(raw_list)):
进入:
for i in range(len(raw_list)-1):
答案 1 :(得分:0)
range(n)
从0变为n-1。在这种情况下,n-1是列表中的最后一个有效索引。当循环处于迭代i = len(raw_list)-1
(最后一次迭代)时,访问i+1
元素的操作会尝试访问len(raw_list)
,这不是数组中的有效索引。因此,循环可以执行的最后一次有效迭代是i=len(rawlist)-2
基本上,你需要让你的for循环少做一次迭代。