如何遍历数据点相互依赖的列表?

时间:2019-05-31 12:09:27

标签: python loops

我有一个列表,a = [5、4、9、3、6、6、8、2],我本质上是想对前三个数字求和,而这个和将是新的第一个值清单。新列表中的下一个值将是4、9和3 ...的总和。等等。如何在Python中循环?

4 个答案:

答案 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]