我正在嘗試使用以下代碼將值添加到空的 2d 串列中:
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”物件不可下標
預期輸出: 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)]
uj5u.com熱心網友回復:
你在這段代碼中有很多錯誤。
該values_to_go串列不是二維串列。括號之間的(7)或任何數字完全等于沒有任何括號的數字。如果你想讓它成為一個元組,你應該告訴python這些不是數字周圍的括號;但這些是元組符號。所以7完全等于(7)。你應該用它(7,)來告訴 python 這是一個tuple帶有一個成員的7. 所以這... = values_to_go[i][0]會沒事的。
另一個錯誤是您撰寫的將成員附加到空的部分list。您不能使用以下運算式指向串列中不存在的成員: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]]
uj5u.com熱心網友回復:
當你創建你的串列時,它是空的,所以基本上你不能訪問它的任何位置,首先你必須創建它們,你可以使用.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 的保留字,所以不要將它用作變數名
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/433007.html
標籤:Python python-3.x 列表 for循环 类型错误
