将值添加到空的二维列表 (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]]