【发布时间】:2017-10-26 22:46:14
【问题描述】:
我需要将列表中的每个数字背靠背进行比较、减去并将结果添加到新列表中。 所以
list1[1]-[0] = list2 [0]
list1[2]-[1] = list2 [1]
等等
但我无法让它这样做。 这是我的块
change = []
index = 0
popyear_up = 1
popyear_low = 0
while index < len(data_numbers):
#for i in range, len(data_numbers:
difference = data_numbers[popyear_up] - data_numbers[popyear_low]
change.append(difference)
popyear_up += 1
popyear_low += 1
index += 1
未注释的“while”行现在返回
difference = data_numbers[popyear_up] - data_numbers[popyear_low]
IndexError: list index out of range
注释行只执行 [1]-[0] 和 [2]-[1],但正确执行并将它们附加到 change[]
我不知道为什么它只做这 2 个。但对于第一个,我觉得它与我的主要数据列表的长度和我要求它创建的列表的长度有关。
所以两个不同的问题,我无法弄清楚我错过了什么。
必要时提供完整代码
file = input('File to open: ')
infile = open(file, 'r')
source_file = infile.readlines()
infile.close()
index = 0
while index < len(source_file):
source_file[index] = source_file[index].rstrip('\n')
index += 1
data_numbers = [int(i) for i in source_file]
change = []
index = 0
popyear_up = 1
popyear_low = 0
while index < len(data_numbers):
#for i in range, len(data_numbers:
difference = data_numbers[popyear_up] - data_numbers[popyear_low]
change.append(difference)
popyear_up += 1
popyear_low += 1
index += 1
#start_year = 1950
#change_sum = float(sum(change))
#change_average = change_sum / len(change)
#max_change = start_year + change.index(max(n)) + 1
#min _change = start_year + change.index(min(n)) + 1
#print('Average Change in Population:',change_average)
#print ('Year with most population increas:',max_change)
#print ('Year with lease population increas:',min_change)
【问题讨论】:
标签: python-3.x list indexing range