2017-09-02 1 views
1

Je suis nouveau sur Stack Overflow et Python. J'essaye de construire un mot en remplaçant des articles dans une liste par index et quand j'exécute ce code seulement la première instance est replace.Fonction Python zip() ne fonctionne pas

word = "DRIPPING" 
letter = "P" 
checkList = [" _ "] * len(word) 
letterLocation=[3,4] 

for (index, replacement) in zip(letterLocation, letter): 
    checkList[index] = replacement 

print(checkList) 

Retours [' _ ', ' _ ', ' _ ', 'P', ' _ ', ' _ ', ' _ ', ' _ ']

Toute aide sera la bienvenue.

+1

'zip' fonctionne parfaitement bien, mais vous utilisez' zip' où vous ne devriez pas utiliser 'zip'. –

Répondre

1

zip prend deux itérations ou plus, et génère des tuples qui contiennent un élément de chaque itérable jusqu'à ce que l'une des itérations soit épuisée.

Depuis letter ne contient qu'un seul caractère, zip va donc émettre seulement unique tuple:

>>> list(zip(checkList,letter)) 
[(' _ ', 'P')] 

Vous n'avez pas besoin zip ici, vous pouvez simplement itérer sur la checkList et affecter letter à tous ces indices:

for index in letterLocation: # look ma, no zip 
    checkList[index] = letter
+0

Merci Willem. Tu es une étoile! Crois-moi pour compliquer les choses. – tadders