Python多维数组列表索引超出范围

时间:2016-09-22 03:23:09

标签: python arrays multidimensional-array indexoutofrangeexception

我正在尝试创建一个程序,它将读取名称和数字的文本文件,并将其变为带有名称和数字的二维数组,如果数字为1,则从数组中删除该项目。但是,我写的用于访问2d数组中的索引的代码不起作用并抛出错误“IndexError:list index out of range”。这是无效的代码块:

for i in range(x):
    list2[i][1] = int(list2[i][1])
    if int(list2[i][1]) == 1:
        list2.pop(i)

这是追溯:

File "/Users/cat/PycharmProjects/myCS106/Names.py", line 16, in updateNames
list2[i][1] = int(list2[i][1])
IndexError: list index out of range

这是list2的外观示例:

[["John Doe","1"],["Jane Smith","0"],["Firstname Lastname","1"]]

我做错了什么,如何正确访问数组中项目的第二部分(在本例中为数字)?

1 个答案:

答案 0 :(得分:0)

如果你只是想从列表中删除一些元素,你可以从头到尾迭代它,这样你就可以删除项而不会导致IndexError

list2 = [["John Doe","1"],["Jane Smith","0"],["Firstname Lastname","1"]]

for i in range(len(list2) - 1, -1, -1):
    list2[i][1] = int(list2[i][1])
    if int(list2[i][1]) == 1:
        list2.pop(i)

print(list2)

输出:

[['Jane Smith', 0]]

当然,您可以使用list comprehension创建新列表:

list2 = [[x[0], int(x[1])] for x in list2 if int(x[1]) != 1]