簡體   English   中英

在遍歷列表時插入列表項的總和

[英]Inserting sum of items of list while iterating through it

我一直在嘗試生成這樣的序列

1 2 1
1 3 2 3 1
1 4 3 5 2 5 3 4 1

該序列基本上在它們之間插入 2 個連續列表元素的總和。 這是我的解決方案:

a =[1,1]
h=[]
for j in range(1,5):
    h=a
    for i in range(0,len(h),2):
        h.insert(i+1, a[i]+a[i+1])
    print(a)
    a=h       

但它在第三次迭代后以某種方式生成了一半正確的序列。

[1, 2, 1]
[1, 3, 2, 3, 1]
[1, 4, 3, 5, 2, 5, 3, 1]
[1, 5, 4, 7, 3, 8, 5, 7, 2, 5, 3, 1]
[1, 5, 4, 7, 3, 8, 5, 7, 2, 5, 3, 1]

任何人都可以幫助我做錯了什么。 提前致謝

h是多余的。 反向循環更高效

a = [1, 1]
for j in range(1, 7):
    for i in range(len(a) - 1, 0, -1):
        a.insert(i, a[i - 1] + a[i])
    print(a)
[1, 2, 1]
[1, 3, 2, 3, 1]
[1, 4, 3, 5, 2, 5, 3, 4, 1]
[1, 5, 4, 7, 3, 8, 5, 7, 2, 7, 5, 8, 3, 7, 4, 5, 1]

列表是句柄。 如果你改變一個,另一個也會改變。 這是我的建議。

a =[1,1]
h=[]
for j in range(1,5):
    h=a.copy()
    for i in range(0,len(a)-1,1):
        h.insert(2*i+1, a[i]+a[i+1])
    print(a)
    a=h.copy()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM