我正在练习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依次递增,所以sum =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))