python - 在每次迭代中循环较短列表长度的时间
问题描述
nv_sides = [[1, 0], [0, 1], [-1, 0], [0, -1]]
for nv in range(len(nv_sides)):
if nv_sides[nv][0] > x or nv_sides[nv][1] > x:
del nv_sides[nv]
if nv_sides[nv][0] > y or nv_sides[nv][1] > y:
del nv_sides[nv]
if nv_sides[nv][0] < 0 or nv_sides[nv][1] < 0:
del nv_sides[nv]
如您所见,nv_sides列表在每次迭代中都会变短,因此在第 4 次迭代中,我得到一个索引超出范围错误。
我该如何解决?
解决方案
诀窍是for
从头到尾运行循环。这样,当元素被删除时,您仍将朝着仍然存在的元素努力。
for nv in range(len(nv_sides) -1, -1, -1):