如果循环 - 索引超出范围

时间:2016-11-14 01:06:52

标签: python loops

这是代码

for i in np.arange(len(tupel)):
    if tupel[i][0]+1 == tupel[i+1][0] and tupel[i][1] != 0:
        pre.append((tupel[i][1]))
    else:
        means.append(pre)
        pre = []

pre和means只是两个列表。我有另一个清单:“tupel”。它看起来像

[(0, 10), (1, 16), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0), (7, 0), (8, 11), (9, 18), (10, 4), (11, 0), (12, 0), (13, 0), (14, 0), (15, 0), (16, 0), (17, 0), (18, 12), (19, 16), (20, 1)]

第二个元素为零的所有tupels都应该被“!= 0”参数切断。如您所见,非零值(第二个元素)存在于某些区间中。现在我想要做的是计算以下项目的第二个元素之和的平均值。

例如

(0,10),(1,16)具有非零的第二元素。我希望平均值是第一元素和第二元素的平均值。将是:(1,26 / 2)。

(2,0),(3,0),(4,0),......应该被切掉。因为第二个元素是零。 (8,11),(9,18),(10,4)应为:(27 / 3,33 / 3)。

要检查第二个元素非零的以下项是否是“下一个整数”,我创建了循环(上面的代码)。但是我得到了错误:

IndexError: list index out of range

如何在不超出索引范围的情况下检查列表中的以下项目?

提前致谢。

1 个答案:

答案 0 :(得分:1)

问题是[i+1] - 您使用索引out of range。您需要np.arange(len(tupel)-1)