while循环 - IndexError:列表索引超出范围

时间:2014-06-19 07:48:19

标签: python python-2.7 while-loop

也许它太简单了,我只是没有看到我的错误。

while list_a[y] in list_a != list_a[-1]:
    print(y);y=y+1

返回IndexError: list index out of range

list_a看起来像:

['00001', '00001', '00002', '00009', '0000G', '0000K', '0000K', '0000U', '0000U', '00013', '0001B', '0001D', '0001D', '0001L', '0001L', '0001N', '0001Q', '0001Q', '0001R', '0001U']

我的目标是在迭代时从列表中删除一些项目(这就是为什么我要使用while循环而不是for y in range(len(list_a)))。

1 个答案:

答案 0 :(得分:2)

想想你想要的是:

while list_a[y] != list_a[-1]:
    ...

即。 "我们正在查看不等于列表中最后一项的项目"。但是,仍然会有问题;如果项目出现在列表中的其他位置,等于最后一项,该怎么办?

执行此操作的一般方法是使用list comprehension从旧列表中的相应项目构建新列表:

list_b = [item for item in list_a if some_test(item)]