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



我正在尝试制作一个程序,该程序将读取名称和数字的文本文件,并使其成为具有名称和数字的2d数组,然后从数组中删除项目,如果数字为1。然而,我写的代码访问索引在2d数组不工作,并抛出错误"IndexError:列表索引超出范围"。这是不能工作的代码块:

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"]]

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

如果你只是想从列表中删除一些元素,你可以从末尾到开始迭代它,这将允许你删除项目而不会导致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]]

当然你可以使用列表推导式来创建一个新的列表:

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

相关内容

  • 没有找到相关文章

最新更新