Ich muss jede Nummer in einer Liste vergleichen, zurückziehen, subtrahieren und das Ergebnis zu einer neuen Liste hinzufügen. soIch kann nicht herausfinden, warum mein Programm keine Liste erstellt
list1[1]-[0] = list2 [0]
list1[2]-[1] = list2 [1]
usw.
Aber ich kann es nicht bekommen, dies zu tun. Hier ist mein Block
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
Die unkommentiert "während" Linie jetzt kehrt
difference = data_numbers[popyear_up] - data_numbers[popyear_low]
IndexError: list index out of range
Die Kommentarzeile nur, dass [1] - [0] und [2] - [1], aber macht sie richtig und hängt sie an, um sie zu ändern []
Ich habe keine Ahnung, warum es nur diese 2 tut. Aber für die erste habe ich das Gefühl, dass es etwas mit der Länge meiner Hauptliste von Daten und der Länge von zu tun hat die Liste, die ich erstelle, um sie zu erstellen.
Also zwei verschiedene Probleme, und ich kann nicht für das Leben von mir herausfinden, was ich vermisse.
Voll Code bei Bedarf
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)