所以,这是我的问题。根据条件,我试图浏览嵌套列表并删除一些元素。问题在于,每当删除一个元素时,这会改变列表的长度,从而产生错误:
IndexError: list index out of range
这是我的代码:
a = [[[1] * 2 for i in range(n)] for j in range(p)]
for y in range(p):
for x in range(n):
if len(a[y]) > 1:
if a[y][x][1] == 1:
if random.random() < s:
del a[y][x]
s只是介于0和1之间的数字。因为我想确保每个列表至少有1个值,我将if len(a [y])&gt; 1部分。我想我能理解这个问题,问题是列表的长度在变化,因此位置也会发生变化。有没有人知道克服这个问题的简单方法?
答案 0 :(得分:0)
你需要像
这样的东西继续;
或
中断;
语句(例如在Java中)将停止循环并阻止它计数太多。
所以你只能删除每个内循环中的一个元素。休息之后;或继续;您可以使用新的列表长度再次遍历列表,以便在必要时删除第二个,第三个..元素。