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.)