如果元素在列表中按升序排列,如何在列表中添加元素?

How to add elements in a list if they are in increasing order in a list?

我正在练习 python 个问题并遇到这个问题,我必须在列表中添加元素(如果它们按递增顺序排列)并将它们存储在列表中。

例如:

my_list = [2,223,6,4,10,12,15]

从 2 到 223,列表在增加,然后从 223 到 6,它在减少。因此,总和为 2+223=225.

从 223 到 6,6 到 4 列表递减,从 4 到 10,10 到 12,12 到 15 递增,所以总和是 4+10+12+15=41.

所以,我的 sum_list 将是 [225,41]

我试过的代码:

list1 = [2,223,6,4,10,12,15]
current_el = list1[0]
suml=list()
sum1=current_el
for i in list1[list1.index(current_el)+1:]:
    while current_el < i:
        print(i)
        sum1=sum1+i
        current_el = list1[list1.index(current_el)+1]
        print(current_el)
        suml.append(sum1)
        
print(suml)

这样更简单:

numbers = [2, 223, 6, 4, 10, 12, 15]
accumulated = []
for i in range(1, len(numbers)):
    if numbers[i] > numbers[i-1]:
        if i == 1 or numbers[i-1] <= numbers[i-2]:
            accumulated.append(numbers[i-1])
        accumulated[-1] += numbers[i]

我们使用 if numbers[i] > numbers[i-1] 检查一个数字是否大于前一个(增加)并且使用 accumulated[-1] += numbers[i] 我们将该数字添加到最后一个累加值。现在我们只缺少在累积列表中创建新元素的逻辑,这是当我们找到一个大于前一个但前一个迭代没有通过此条件的数字时,或者如果没有前一个对,我们可以查看

另一种与您正在尝试的解决方案更相似的不同解决方案将分两步完成。第一步将创建一个列表列表,其中的数字按升序分组。然后你丢弃单个成员的那些组(你没有将 6 视为升序组)然后将这些组加在一起。

numbers = [2, 223, 6, 4, 10, 12, 15]
groups = [[2]]
for number in numbers[1:]:
    if number > groups[-1][-1]:
        groups[-1].append(number)
    else:
        groups.append([number])
accumulated = []
for group in groups:
    if len(group) == 1:
        continue
    accumulated.append(sum(group))