這個問題在這里已經有了答案: 串列更改意外地反映在子串列中的串列 (17個答案) 2 小時前關閉。
我在嘗試將包含如下串列的串列的大小加倍時遇到問題:
main_list = [[], [], [], []]
假設我想在 main_list[1] 中添加單詞“test”。這可以通過以下方式簡單地完成:
main_list[1].append("test")
但是,當我想將 main_list 的大小加倍并因此將我目前正在執行的串列數量加倍時:
for a in main_list:
while len(a) != 0:
del a[0]
if len(a) == 0:
continue
這是為了洗掉舊的 main_lists 內容,因為我不希望舊的串列內容延續到加倍串列中。
其次是:
main_list = main_list * 2
這是我遇到問題的地方。如果我嘗試在 index = 0 處附加測驗,我希望結果是:
main_list[0].append("test")
print(main_list) --> [["test], [], [], [], [], [], [], []]
但是,我得到的輸出是:
main_list[0].append("test")
print(main_list) --> [["test], [], [], [], ["test], [], [], []]
所以舊的索引值顯然已經轉移到了新的串列中。有沒有簡單的方法來解決這個問題?我在考慮也許做一個 for 回圈,強制將索引更改為正確,但在串列翻了幾次之后,這似乎是不可行的。
uj5u.com熱心網友回復:
您只需要為main_list. 當您這樣做時,所有舊串列都將丟失:
size = len(main_list) * 2
main_list = [[] for _ in range(size)]
main_list[0].append("test")
print(main_list)
按預期輸出
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/522481.html
標籤:Python列表索引
