鉴于此列表:
[1, 2, 4, 8, 16, 32]
我想以以下列表结束:
[1, 2, 2, 3, 4, 6, 8, 12, 16, 24, 32]
为了澄清,我想将第一个列表转换为:
[1, X, 2, X, 4, X, 8, X, 16, X, 32]
...其中X
是第一个列表中两个前后数字之间的平均值.最终列表应以第一个列表的第一个值开始,并以第一个列表的最后一个值结束.
我试图这样做,但当然这只是用那些平均数覆盖了现有的列表.我怎么织呢?
list_1 = [1, 2, 4, 8, 16, 32]
list_1 = [round((list_1[i] + list_1[i+1])/2) for i in range(len(list_1)-1)]
print(list_1)
UPDATE
我想这可能行得通.也许有更好的解决方案?
list_1 = [1, 2, 4, 8, 16, 32]
list_2 = [round((list_1[i] + list_1[i+1])/2) for i in range(len(list_1)-1)]
list_1 = sorted(list_1 + list_2)
print(list_1)