Pour modifier une liste, itérer à l'aide d'indices:
for i in range(len(L))):
L[i] += '.txt'
Cependant, dans ce cas, vous ne vraiment pas besoin de modifier la liste, de sorte que vous voulez probablement utiliser la liste comrehension, comme l'a suggéré par @Ashwini Chaudhary. Cependant, en utilisant la compréhension de la liste crée nouvelle liste, donc vous pouvez l'assigner à nouveau en L:
L = [s + '.txt' for s in L]
Mais, si la variable L d'origine est une variable globale ou non locale, la déclaration ci-dessus créera de nouvelles, variable locale , qui disparaîtra à la fin de la fonction en cours, et peut créer un désordre si vous avez essayé d'y accéder avant la asssignment:
>>> L = ['a', 'b', 'c']
>>> def addtxt():
... print(L)
... L = [s + '.txt' for s in L]
...
>>> addtxt()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in addtxt
UnboundLocalError: local variable 'L' referenced before assignment
vous devez ajouter global
(ou nonlocal
dans d'autres cas) déclaration. Ce n'est pas une façon propre de gérer cela.
Ainsi, la combinaison de remplacement en place avec la compréhension de la liste, vous obtenez la suggestion de @Jamylak
L[:] = [s + '.txt' for s in L]
où [:]
signifie que le contenu de la liste sera remplacé par le côté droit de l'affectation. Cela n'ajoutera pas de liaison locale, et s'adaptera à n'importe où la boucle mentionnée ci-dessus s'adaptera.
S'il vous plaît ne pas modifier vos questions à faire les réponses existantes sont invalides, et au lieu de demander aux gens d'écrire du code pour vous, au moins montrer ce que vous avez essayé jusqu'à présent (bien que pour être juste, les 4 personnes qui ont écrit le code pour vous ne montre aucun effort du tout ...) – geoffspear