Python 多维数组列表索引超出范围
Python multidimensional array list index out of range
我正在尝试制作一个程序,该程序将读取名称和数字的文本文件并将其放入包含名称和数字的二维数组,然后如果数字为 1 则从数组中删除该项目。但是,我为访问二维数组中的索引而编写的代码不起作用并抛出错误 "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"]]
我做错了什么,如何正确访问数组中项目的第二部分(在本例中为数字)?
如果您只想从列表中删除一些元素,您可以从头到尾迭代它,这样您就可以删除项目而不会导致 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]
我正在尝试制作一个程序,该程序将读取名称和数字的文本文件并将其放入包含名称和数字的二维数组,然后如果数字为 1 则从数组中删除该项目。但是,我为访问二维数组中的索引而编写的代码不起作用并抛出错误 "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"]]
我做错了什么,如何正确访问数组中项目的第二部分(在本例中为数字)?
如果您只想从列表中删除一些元素,您可以从头到尾迭代它,这样您就可以删除项目而不会导致 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]