在遍历列表时插入列表项的总和
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
但它在第 3 次迭代后以某种方式生成了一半正确的序列。
[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()
我一直在尝试生成这样的序列
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
但它在第 3 次迭代后以某种方式生成了一半正确的序列。
[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()