我有一个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
答案 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)