python按增量值扩展列表

时间:2017-03-29 09:03:59

标签: python list

是否有一个很好的简单方法来扩展列表 n 次,并根据现有值逐步增加?

基本上我推断了一个渐变,但是如果我真的可以避免它,就不要调用numpy / scipy。

我有一些名单,让我们说:

x = [1,2,3,4,5]
y = [10,20,30,40,50]

我已经得到了成对差异的平均值(列表的平均梯度')。我现在想扩展每个列表(让我们说20次,每次总长度为25次),其中每个后续值都是先前的值加上计算的平均差值(如果这是负的,显然它会减小)。

因此,x[5]会评估为x[4] + gradient

因此,x列表最终会结束:

x = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]

因为原始x = 1的平均差异(显然这只是测试数据,实际上我想在y列表中使用更复杂的浮点数来执行此操作。

2 个答案:

答案 0 :(得分:4)

您可以使用list.extend()和生成器表达式:

>>> x = [1, 2, 3, 4, 5]
>>> gradient, n = x[1]-x[0], 10
>>> x.extend(x[-1] + gradient for _ in range(1, n+1))
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

对于整数列表,您还可以将range传递给list.extend()

>>> x.extend(range(x[-1]+gradient, x[-1] + gradient*n + 1, gradient))

答案 1 :(得分:1)

是的,你可以。

x = [1,2,3,4,5]
# Calculate your gradient, for simplicity I will just assign 1
# If the gradient has to change, calculate inside the loop
gradient = 1
for i in range(20):
    x.append(x[-1] + gradient)