鉴于此列表:

[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)

推荐答案

我不确定它是否更好,但您可以考虑以下内容(对于python 3.10+pairwise):

from itertools import pairwise, chain

lst = [1, 2, 4, 8, 16, 32]

means = (round(sum(pair) / 2) for pair in pairwise(lst))
output = [*chain.from_iterable(zip(lst, means)), lst[-1]] # weaving
print(output) # [1, 2, 2, 3, 4, 6, 8, 12, 16, 24, 32]

如果pairwise不可用,您可以使用:

means = (round(sum(pair) / 2) for pair in zip(lst, lst[1:]))

Python相关问答推荐

Python多处理:当我在一个巨大的pandas数据框架上启动许多进程时,程序就会陷入困境

滚动和,句号来自Pandas列

根据另一列中的nan重置值后重新加权Pandas列

删除任何仅包含字符(或不包含其他数字值的邮政编码)的观察

在Python Attrs包中,如何在field_Transformer函数中添加字段?

如何找到满足各组口罩条件的第一行?

如何在类和classy-fastapi -fastapi- followup中使用FastAPI创建路由

Python键入协议默认值

通过ManyToMany字段与Through在Django Admin中过滤

从列表中获取n个元素,其中list [i][0]== value''

BeautifulSoup:超过24个字符(从a到z)的迭代失败:降低了首次深入了解数据集的复杂性:

Autocad使用pyautocad/comtypes将对象从一个图形复制到另一个图形

按条件添加小计列

pytest、xdist和共享生成的文件依赖项

我怎么才能用拉夫分拣呢?

Matplotlib中的曲线箭头样式

使用pythonminidom过滤XML文件

将索引表转换为Numy数组

基于2级列表的Pandas 切片3级多索引

使用OpenPYXL切换图表上的行/列