【问题标题】:How to make sum of each value of list如何对列表的每个值求和
【发布时间】:2021-05-01 09:54:50
【问题描述】:
# List_values = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
# Example :
# 21 = 1+2+3+4+5+6
# 27 = 2+3+4+5+6+7
# 33 = 3+4+5+6+7+8
# 39 = 4+5+6+7+8+9
# Output = [21,27,33,39,45,51,57,63,69,75] # till 10 times

我正在尝试将 0 索引值与第 N 个索引值相加,然后跳过第一个索引值 (1) 并开始从第二个索引值 (2) 到第 N 个索引值进行求和

【问题讨论】:

  • 你考虑过使用简单的循环吗?或者您正在寻找一个没有循环的有效解决方案?
  • 我正在寻找一种有效的方法
  • @Vipul 所以预期的结果应该是[21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99, 105] ?
  • 是,列表中的值可以是无序序列

标签: arrays python-3.x list integer logic


【解决方案1】:

你想要这个吗? -

n = 5 # specify the value of n
result = [sum(l[i:(i+n+1)]) for i in range(len(l)-n)][:10]
print(result) 

这里的想法是一次评估 5 个元素的总和,然后从列表中取出前 10 个元素。

[21, 27, 33, 39, 45, 51, 57, 63, 69, 75]

【讨论】:

  • 谢谢你能解释一下吗
  • 我保持一个长度为 n 的滑动窗口,同时在一个列表上交替,然后我正在评估每个新窗口的总和。最后,我将结果切片以获取前 10 个总和值
【解决方案2】:

我认为您至少需要一个循环来遍历列表。 以下是我对您的问题的处理方法:

# creating a list
list1 = [1, 2, 3, 4, 5]
for i in range(len(list1)):
    sm = sum(list1[i:len(list1)]) # Sum of 'a' from 0th index to 4th index. sum(a) == sum(a[0:len(a)]
    print(sm)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 2015-10-24
    相关资源
    最近更新 更多