给出以下列表
a = [0, 1, 2, 3]
我想创建一个新列表b,该列表由将当前值和下一个值a相加的元素组成。它将包含 1 小于元件a。
b
a
像这样:
b = [1, 3, 5]
(从0 + 1、1 + 2和2 + 3)
这是我尝试过的:
b = [] for i in a: b.append(a[i + 1] - a[i]) b
问题是我不断收到此错误:
IndexError: list index out of range
我很确定会发生这种情况,因为当我得到(3)的最后一个元素时,我无法将其添加到任何东西中,因为这样做超出了它的值(添加3之后就没有值了) )。因此,我需要告诉代码在2处停止,同时仍引用3进行计算。
for
IndexError
我们可以通过遍历一系列索引来解决此问题:
for i in range(len(a))
并访问a的项目,如下所示:a[i]。这不会出现任何错误。
a[i]
a[i+1]
range(5)
0 1 2 3 4
a[5]
为了解决这个问题,您应该减去1len(a)以获得一个范围序列0 1 2 3。由于您使用的是索引i+1,因此您仍然会获得最后一个元素,但是这样可以避免错误。
len(a)
0 1 2 3
i+1
b = [a[i] + a[i+1] for i in range(len(a) - 1)]
这只需要一行即可完成工作。