Toutes les autres réponses, et principalement sur la compréhension des listes, sont excellentes. Mais juste pour expliquer votre erreur:
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
est un membre de votre liste, pas un index. Voici ce que vous pourriez écrire:
[...]
for a in lines:
strip_list.append(a.strip())
Autre commentaire important: vous pouvez créer une liste vide de cette façon:
strip_list = [0] * 20
Mais ce n'est pas si utile, car .append
ajoute des éléments à votre liste. Dans votre cas, il n'est pas utile de créer une liste avec des valeurs par défaut, car vous la construirez élément par élément lors de l'ajout de chaînes supprimées.
Donc, votre code devrait être comme:
strip_list = []
for a in lines:
strip_list.append(a.strip())
Mais, bien sûr, le meilleur est celui-ci, car c'est exactement la même chose:
stripped = [line.strip() for line in lines]
Au cas où vous auriez quelque chose de plus compliqué qu'un simple .strip
, mettez-le dans une fonction et faites de même. C'est la manière la plus lisible de travailler avec des listes.
strip_list
19 fois, puis vos lignes supprimées. Ce code a une très mauvaise odeur. De plus, si vous avez obtenu ce contenu à partir d'un fichier, vous devriez le supprimer en cours de route - créer une grande liste, puis le dénigrer dans une autre grande liste n'est pas une bonne idée. Aussi 2, votre code ne devrait pas dépendre de la connaissance de la longueur du mot / ligne le plus long. Reculez un peu - qu'essayez-vous de réaliser? Que ferez-vous avecstrip_list
?