在Python中获取索引出界错误

时间:2018-09-10 04:53:39

标签: python python-2.7

我有一个Python列表列表

table = [[30,100],[25,100],[20,100],[15,00],[10,100],[5,100]]

现在我要实现如下所示的逻辑,如果30> 25然后将第一列表第二个值(100)除以2,然后将该值添加到第二列表第二个值(100 + 50),依此类推,最后结果应该如下所示

[30,50]
[25,75]
[20,87.5]

,依此类推。我已经完成了

table = [[30,100],[25,100],[20,100],[15,00],[10,100],[5,100]]

print len(table)

for i in range(len(table)):
    print i
    if  table[i][0] > table[i+1][0]:
        table[i][1] = table[i][1]/2
        table[i+1][1]=table[i+1][1] + table[i][1]
        print table[i][0] , table[i][1]



from pprint import pprint
pprint(table) 

但出现错误

    if  table[i][0] > table[i+1][0]:
IndexError: list index out of range

1 个答案:

答案 0 :(得分:1)

问题是试图迭代表数组的整个长度,应该是数组的长度减一。由于索引从零开始。

还请注意另一个原因:您将无法将逻辑应用于列表中的最后一个元素,因为将没有n + 1个元素可以应用于该元素。

table = [[30,100],[25,100],[20,100],[15,00],[10,100],[5,100]]

print len(table)

for i in range(len(table)-1):
    print i
    if  table[i][0] > table[i+1][0]:
        table[i][1] = table[i][1]/2
        table[i+1][1]=table[i+1][1] + table[i][1]
        print table[i][0] , table[i][1]



from pprint import pprint
pprint(table)