在列表中展开数字

2024-10-01 13:45:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数字列表:

[10,20,30]

我需要的是根据预定义的增量进行扩展。因此,让我们调用x增量和x=2,我的结果应该是:

[10,12,14,16,18,20,22,24,.....,38]

现在我正在使用for循环,但是它非常慢,我想知道是否有更快的方法。你知道吗

编辑:

newA = []
for n in array:
    newA= newA+ generateNewNumbers(n, p, t) 

函数生成新的数字,只需生成要添加到列表中的新数字。你知道吗

编辑2: 为了更好地定义问题,第一个数组包含一些时间戳:

[10,20,30]

我有两个参数,一个是采样率,一个是采样时间,我需要的是扩展数组,根据采样率在两个时间戳之间添加正确数量的时间戳。 例如,如果采样率为3,采样时间为3,则结果应为:

[10,13,16,19,20,23,26,29,30,33,36,39]

Tags: 方法函数in编辑列表for参数定义
3条回答

使用rangeitertools.chain

l = [10,20,30]
x = 3
from itertools import chain
list(chain(*[range(i,i+10,x) for i in l]))
#Output:
#[10, 13, 16, 19, 20, 23, 26, 29, 30, 33, 36, 39]

您可以使用np.add.outer向每个时间戳添加相同的增量集,然后使用ravel展平结果。你知道吗

import numpy as np
a = [10,20,35]
inc = 3
ninc = 4
np.add.outer(a, inc * np.arange(ninc)).ravel()
# array([10, 13, 16, 19, 20, 23, 26, 29, 35, 38, 41, 44])

您可以使用列表压缩,但我不确定是否了解最后一个包含点的停止条件

a = [10, 20, 30, 40]
t = 3
sum([[x for x in range(y, z, t)] for y, z in zip(a[:-1], a[1:])], []) + [a[-1]]

将给予

[10, 13, 16, 19, 20, 23, 26, 29, 30, 33, 36, 39, 40]

相关问题 更多 >