首页 > 解决方案 > 在每次迭代中循环较短列表长度的时间

问题描述

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 次迭代中,我得到一个索引超出范围错误。

我该如何解决?

标签: python

解决方案


诀窍是for从头到尾运行循环。这样,当元素被删除时,您仍将朝着仍然存在的元素努力。

for nv in range(len(nv_sides) -1, -1, -1):

推荐阅读