是否有一个很好的简单方法来扩展列表 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
列表中使用更复杂的浮点数来执行此操作。
答案 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)