将值添加到空的二维列表 (TypeError)
Adding values to an empty 2D list (TypeError)
我正在尝试使用以下代码将值添加到一个空的二维列表中:
values_to_go = [(7, 6, 2, 2, 350.0, '6', '11/05/2022\n', 7), (8, 6, 2, 1, 350.0, '08:30-10:30\n', '15/06/2022\n', 7), (9, 6, 2, 1, 350.0, '16:00-18:00\n', '25/08/2022\n', 7)]
list = []
for i in range(len(values_to_go)):
list[i][0] = values_to_go[i][0]
list[i][1] = values_to_go[i][5]
list[i][2] = values_to_go[i][6]
list[i][3] = values_to_go[i][2]
print(list)
但是我收到这个错误:
TypeError: 'int' object is not subscriptable
预期输出: values_to_go = [(7, 6, 11/05/2022\n, 2), (8, 08:30-10:30\n, 15/06/2022\n, 2), (9, 16:00-18:00\n, 25/08/2022\n, 2)]
当你创建你的列表时,它是空的,所以基本上你不能访问它的任何位置,首先你必须创建它们你可以使用 .append()
函数来做到这一点。
您的代码可能如下所示:
mylist = [[],[],[]]
for i in range(len(values_to_go)):
mylist[i].append(values_to_go[i][0])
mylist[i].append(values_to_go[i][5])
mylist[i].append(values_to_go[i][6])
mylist[i].append(values_to_go[i][2])
输出:[[7, '6', '11/05/2022\n', 2], [8, '08:30-10:30\n', '15/06/2022\n', 2], [9, '16:00-18:00\n', '25/08/2022\n', 2], ]
一些额外的提示,list
是一个 Python 保留字,所以不要将它用作变量名
你这段代码有很多错误。
values_to_go
列表不是二维列表。 (7)
或括号之间的任何数字完全等于没有任何括号的数字。如果你想让它成为一个元组,你应该告诉 python 这些不是数字周围的括号;但这些是元组符号。所以 7
完全等于 (7)
。您应该使用 (7,)
来告诉 python 这是一个 tuple
,其中一个成员是 7
。所以这个... = values_to_go[i][0]
就OK了
另一个错误是您编写的将成员附加到空 list
的部分。您不能使用此表达式指向列表的 non-existent 成员:list[i][0]
。没有 list[i]
,因此显然没有 list[i][0]
。如果你想追加到列表的末尾,你应该这样做:
list.append(anything)
这将是这样的:
>>> values_to_go = [(7,), (8,), (9,)] # or [[7], [8], [9]]
>>> some_list = []
>>> for i in range(len(values_to_go)):
... some_list.append(values_to_go[i][0])
...
>>> print(some_list)
[7, 8, 9]
>>> # and if you want to make it 2D:
>>> some_list = []
>>> for i in range(len(values_to_go)):
... some_list.append([values_to_go[i][0]])
...
>>> print(some_list)
[[7], [8], [9]]
我正在尝试使用以下代码将值添加到一个空的二维列表中:
values_to_go = [(7, 6, 2, 2, 350.0, '6', '11/05/2022\n', 7), (8, 6, 2, 1, 350.0, '08:30-10:30\n', '15/06/2022\n', 7), (9, 6, 2, 1, 350.0, '16:00-18:00\n', '25/08/2022\n', 7)]
list = []
for i in range(len(values_to_go)):
list[i][0] = values_to_go[i][0]
list[i][1] = values_to_go[i][5]
list[i][2] = values_to_go[i][6]
list[i][3] = values_to_go[i][2]
print(list)
但是我收到这个错误:
TypeError: 'int' object is not subscriptable
预期输出: values_to_go = [(7, 6, 11/05/2022\n, 2), (8, 08:30-10:30\n, 15/06/2022\n, 2), (9, 16:00-18:00\n, 25/08/2022\n, 2)]
当你创建你的列表时,它是空的,所以基本上你不能访问它的任何位置,首先你必须创建它们你可以使用 .append()
函数来做到这一点。
您的代码可能如下所示:
mylist = [[],[],[]]
for i in range(len(values_to_go)):
mylist[i].append(values_to_go[i][0])
mylist[i].append(values_to_go[i][5])
mylist[i].append(values_to_go[i][6])
mylist[i].append(values_to_go[i][2])
输出:[[7, '6', '11/05/2022\n', 2], [8, '08:30-10:30\n', '15/06/2022\n', 2], [9, '16:00-18:00\n', '25/08/2022\n', 2], ]
一些额外的提示,list
是一个 Python 保留字,所以不要将它用作变量名
你这段代码有很多错误。
values_to_go
列表不是二维列表。 (7)
或括号之间的任何数字完全等于没有任何括号的数字。如果你想让它成为一个元组,你应该告诉 python 这些不是数字周围的括号;但这些是元组符号。所以 7
完全等于 (7)
。您应该使用 (7,)
来告诉 python 这是一个 tuple
,其中一个成员是 7
。所以这个... = values_to_go[i][0]
就OK了
另一个错误是您编写的将成员附加到空 list
的部分。您不能使用此表达式指向列表的 non-existent 成员:list[i][0]
。没有 list[i]
,因此显然没有 list[i][0]
。如果你想追加到列表的末尾,你应该这样做:
list.append(anything)
这将是这样的:
>>> values_to_go = [(7,), (8,), (9,)] # or [[7], [8], [9]]
>>> some_list = []
>>> for i in range(len(values_to_go)):
... some_list.append(values_to_go[i][0])
...
>>> print(some_list)
[7, 8, 9]
>>> # and if you want to make it 2D:
>>> some_list = []
>>> for i in range(len(values_to_go)):
... some_list.append([values_to_go[i][0]])
...
>>> print(some_list)
[[7], [8], [9]]