我正在尝试创建一个程序,它将读取名称和数字的文本文件,并将其变为带有名称和数字的二维数组,如果数字为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"]]
我做错了什么,如何正确访问数组中项目的第二部分(在本例中为数字)?
答案 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]