基于条件向列表元素添加值(Python)

基于条件向列表元素添加值(Python),python,Python,假设我有一张这样的清单: list=[1,2.1,3.3,4.5,3.2,4.7,1,3,3.3,3.9,4.9] 现在,每当列表中的后续元素小于前一个元素时,也就是说,list[i]> [ 1. 2.1 3.3 4.5 13.2 14.7 21. 23. 23.3 23.9 24.9] 请注意,list是python中用于创建列表的内置函数。最好为变量选择不同的名称。请参阅:像这样的序列应该发生什么:[1,4,3,12,11]?哦,谢谢你的评论@ekhumoro同样的事情是明确的:

假设我有一张这样的清单:

list=[1,2.1,3.3,4.5,3.2,4.7,1,3,3.3,3.9,4.9]

现在,每当列表中的后续元素小于前一个元素时,也就是说,
list[i]
我想从这一点到满足条件的下一点,以升序向所有元素添加10的倍数。上面示例的结果列表应如下所示:

new_list=[1,2.1,3.3,4.5,13.2,14.7,21,23,23.3,23.9,24.9]

所以先加10,然后加20。。。 我要说的是,每个间隔的长度都非常长


我怎样才能优雅地做到这一点?我做了我想做的事情,将该列表用作临时列表,并通过for和if循环附加到一个新列表,但这看起来相当难看。我想用列表理解来做这件事,但我不知道该怎么做。

这可以用
numpy
包来完成。其思想是首先确定下一个值较低的位置。然后你做一个累积和,然后乘以10。最后,将其添加回原始列表

import numpy as np

a = [1, 2.1, 3.3, 4.5, 3.2, 4.7, 1, 3, 3.3, 3.9, 4.9]
b = [0] + [int(a[i+1] < a[i]) for i in range(len(a)-1)]

aa = np.array(a)
ba = np.array(b).cumsum() * 10

print(aa + ba)

>>> [ 1.   2.1  3.3  4.5 13.2 14.7 21.  23.  23.3 23.9 24.9]
将numpy导入为np
a=[1,2.1,3.3,4.5,3.2,4.7,1,3,3.3,3.9,4.9]
b=[0]+[int(a[i+1]>> [ 1.   2.1  3.3  4.5 13.2 14.7 21.  23.  23.3 23.9 24.9]

请注意,list是python中用于创建列表的内置函数。最好为变量选择不同的名称。请参阅:像这样的序列应该发生什么:
[1,4,3,12,11]
?哦,谢谢你的评论@ekhumoro同样的事情是明确的:
3
小于
4
,所以在添加
10
之后,我们得到
[1,4,13,12,11]
。现在
12
11
小于
13
——那么我们是否也将
10
添加到它们中?或添加
20
?如果我们添加
10
,我们得到
[1,4,13,22,21]
。但是现在
21
小于
22
-我们也需要添加
20
吗?哦,对不起,我没有仔细查看您的序列。所以实际上这个列表代表了某个事件被测量的时间。但计时器只有一定的长度,然后重新启动。因此,在我的示例中,在计时器在0处重新启动之前,阈值为10。所以元素3.2(4.5之后)实际上是13.2,依此类推。所以你提到的情况不会发生。
list1 = [1, 2.1, 3.3, 4.5, 3.2, 4.7, 1, 3, 3.3, 3.9, 4.9]

for i in range(len(list1)):
    while True:
        try:
            if list1[i] > list1[i+1]:
                list1[i+1] = list1[i+1] + 10
            else:
                break
        except:
            print("Done")
            break
        print(list1)

print("Final List: ")
print(list1)