2017-07-03 123 views
-1

我有一个程序,在称为小狗的二维数组中寻找一个特定的ID,当我这样做,我的程序崩溃与列表索引超出范围错误。这里是代码的有关章节:列表索引超出范围错误在Python - 二维数组

for i in range(1,len(pups)): # start from 1 as the first row contains the labels 
    if pups[i][0]==ID: 
     report=pups[i] 
     pups.pop(i) 
     succesful=True 

我在蟒蛇新的,所以如果我犯了一个愚蠢的错误,我会很高兴,如果你能告诉我 - 在此先感谢。

+2

不要变异为你通过它迭代列表('pups'在这种情况下) – CoryKramer

+1

python注释字符是'#' – Will

+0

哦,我看到了 - 谢谢你的回答 –

回答

-1

你现在正在做的是在迭代它时删除列表中的元素。您的列表大小不断缩小,而您在相同的范围内迭代。您最终会遇到您试图引用的索引实际上超出范围的情况。

如果您希望基于某些谓词过滤掉你的列表,你可以用一个列表理解,这样的:

filtered_pups = [pup for pup in pups if pup[0] == ID]