我有一个列表,a = [5、4、9、3、6、6、8、2],我本质上是想对前三个数字求和,而这个和将是新的第一个值清单。新列表中的下一个值将是4、9和3 ...的总和。等等。如何在Python中循环?
答案 0 :(得分:8)
list slicing
是个好方法。
所有您需要做的就是从开始索引到结束索引2游走((可以计算最后3个元素的总和,当达到倒数第二个或最后一个元素时,您将不能使用3个元素)
在这里您可以获取3个元素,并使用列表切片,切片列表
当前索引到下3个索引,即a[i:i+3]
,其中[i,i+3)
是范围。然后在该新列表上执行sum
操作,然后将重用附加到最终列表。
a = [5, 4, 9, 3, 6, 6, 8, 2]
res=[]
for i in range(len(a)-2):
res.append(sum(a[i:i+3]))
print(res)
输出
[18, 16, 18, 15, 20, 16]
答案 1 :(得分:2)
一个班轮:
list(map(sum, zip(a, a[1:], a[2:])))
输出:
[18, 16, 18, 15, 20, 16]
因此,您正在创建要累加的数字的必需子列表,然后使用高阶函数map
对每个子列表求和。
答案 2 :(得分:2)
如果我了解您想要什么:
b = [sum(a[i : i+3]) for i in range(0, len(a)-2)]
答案 3 :(得分:0)
在尝试访问它们之前,遍历List的可能索引,以确保存在index +1和index + 2。将这些值相加并将其附加到新列表中。
a = [5, 4, 9, 3, 6, 6, 8, 2]
b = []
for index in range(len(a)):
result = a[index]
if index + 1 < len(a):
result += a[index + 1]
if index + 2 < len(a):
result += a[index + 2]
b.append(result)
print(b)
结果:
[18, 16, 18, 15, 20, 16, 10, 2]