J'ai les listes suivantes:
for word in mylist: for word2 in mylist2: if word == word2.upper(): word.replace(word, word2)
Je veux remplacer les mots de mylist qui existent dans mylist2, mais en majuscules. ma sortie souhaitée ressemblerait à:
mylist = ["Foo", "Bar", "NOTFOO", "NOTBAR"]
J'ai essayé ce qui suit. Cependant, il n'y a pas eu de changement dans ma liste.
mylist = ["FOO", "BAR", "NOTFOO", "NOTBAR"] mylist2 = ["Foo", "Bar"]
3 Réponses :
Dans la syntaxe for item in somelist
de Python, item
est essentiellement défini sur une copie de chaque élément de la liste à chaque itération, plutôt qu'une référence à un élément de la liste.
Vous n'avez pas non plus vraiment besoin de la boucle interne, car la condition in
de Python peut être utilisée pour vérifier l'appartenance à la liste.
Et notez également qu'il semble que vous vouliez le éléments remplacés en majuscules, pas entièrement en majuscules.
Je pense qu'une manière relativement pythonique d'accomplir ce que vous voulez est:
for i, word in enumerate(mylist): if word.capitalize() in mylist2: mylist[i] = word.capitalize()
Essayez ceci
['Foo', 'Bar', 'NOTFOO', 'NOTBAR']
Cela semble fonctionner correctement:
mylist = ["FOO", "BAR", "NOTFOO", "NOTBAR"] mylist2 = ["Foo", "Bar"] for x in range(0, len(mylist)): for word2 in mylist2: if mylist[x] == word2.upper(): mylist[x] = word2 print(str(mylist))
Les éléments de mylist sont-ils garantis d'être déjà capitalisés? (Vous avez écrit en majuscules, mais je pense que cela voulait dire en fait une majuscule.)