Wszystkie inne odpowiedzi, a głównie dotyczące rozumienia listy, są świetne. Ale żeby wyjaśnić twój błąd:
strip_list = []
for lengths in range(1,20):
strip_list.append(0) #longest word in the text file is 20 characters long
for a in lines:
strip_list.append(lines[a].strip())
a
jest członkiem Twojej listy, a nie indeksem. Możesz napisać tak:
[...]
for a in lines:
strip_list.append(a.strip())
Kolejny ważny komentarz: pustą listę możesz stworzyć w ten sposób:
strip_list = [0] * 20
Ale to nie jest tak przydatne, ponieważ .append
dodaje rzeczy do listy. W twoim przypadku nie jest użyteczne tworzenie listy z domyślnymi wartościami, ponieważ będziesz budować ją jako element dla każdego elementu podczas dołączania usuniętych ciągów.
Twój kod powinien wyglądać następująco:
strip_list = []
for a in lines:
strip_list.append(a.strip())
Ale na pewno najlepszy jest ten, ponieważ to dokładnie to samo:
stripped = [line.strip() for line in lines]
Jeśli masz coś bardziej skomplikowanego niż zwykłe a .strip
, umieść to w funkcji i zrób to samo. To najbardziej czytelny sposób pracy z listami.
strip_list
19 razy, a następnie dołączasz pozbawione linie. Ten kod ma bardzo nieprzyjemny zapach. Również jeśli masz te rzeczy z pliku, powinieneś je rozbierać po drodze - budowanie dużej listy, a następnie wbijanie jej w inną dużą listę nie jest dobrym pomysłem. Również 2, twój kod nie powinien zależeć od znajomości długości najdłuższego słowa / linii. Cofnij się trochę - co próbujesz osiągnąć? Co zrobiszstrip_list
?