我有一個與此類似的問題。
在這里,我試圖在串列中的每 5 個之后附加 0。
下面的代碼不會更新串列的長度,我得到的輸出是[1,4,5,0,2,7,5,0,5],而所需的輸出是[1,4,5,0,2,7,5,0,5,0]
mylist1 = [1,4,5,2,7,5,5]
for i in range(len(mylist1)):
if mylist1[i] == 5:
mylist1.insert(i 1,0)
print(f'output: {mylist1}')
我必須在同一個串列 mylist1 中更新。
uj5u.com熱心網友回復:
嘗試這個 :
mylist1 = [1,4,5,2,7,5,5]
for i, value in enumerate(mylist1):
if value == 5:
mylist1.insert(i 1, 0)
print(f'output: {mylist1}')
uj5u.com熱心網友回復:
問題是當您將專案插入串列時,串列長度發生了變化。所以你的回圈不會迭代所有專案。
嘗試這個:
mylist1 = [1, 4, 5, 2, 7, 5, 5]
list_index = 0
while list_index < len(mylist1):
if mylist1[list_index] == 5:
mylist1.insert(list_index 1, 0)
list_index = list_index 1
list_index = 1
print(f'output: {mylist1}')
uj5u.com熱心網友回復:
該list.insert方法的時間復雜度為O(n),因此在回圈中呼叫它會使整體時間復雜度為O(n ^ 2)。
要以線性時間復雜度執行此操作,您可以通過迭代輸入串列并0在看到5.
output = []
for i in mylist1:
output.append(i)
if i == 5:
output.append(0)
如果您確實希望更改原始串列,可以將新串列復制到原始串列:
mylist1[:] = output
演示:https ://replit.com/@blhsing/ProperGrownDatum
uj5u.com熱心網友回復:
您可以像這樣安全地反向迭代您的串列:
mylist1 = [1, 4, 5, 2, 7, 5, 5]
for i in range(len(mylist1)-1, -1, -1):
if mylist1[i] == 5:
mylist1.insert(i 1, 0)
print(f'output: {mylist1}')
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/518392.html
標籤:Python列表附加
