2014-06-19 39 views
1

也许这太简单了,我只是没有看到我的错误。while循环 - IndexError:列表索引超出范围

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

您如何看待这种情况下呢?它测试'list_a [y]'是否在'list_a'(true或indexerror),然后将这个(true)与'list_a [-1]'进行比较。可能不是你想要的。你有没有尝试过使用'while y

+0

最后循环确实是,直到列表的最后一项输入正确。然后它再次进行比较,发生错误 – user3753064

+0

(小修正:'in'和'!='具有相同的[优先](https://docs.python.org/2/reference/expressions.html#operator-precedence) ,因此'x in y!= z'实际上就像'(x in y)和(y!= z)'一样计算,类似于'x

回答

2

认为你试图为是:

​​

即“而我们看到的,是不是等于最后在列表中的项目”。但是,仍然会有问题;如果项目出现在列表中与最后一个项目相同的其他位置,该怎么办?

一般的方式做,这是使用list comprehension建立在旧列表从适当的项目一个新的列表:

list_b = [item for item in list_a if some_test(item)] 
相关问题