2017-09-29 2 views
-1

J'ai une liste:le remplacement d'un élément d'un tuple par un autre élément stocké dans une liste en python

replace_by=['a1','b1','c1','d1','e1'] 

J'ai aussi une liste de tuples dans le type de

main_list=[('a',[]),('b',[]),('c',[]),('d',[]),('e',[])] 

Mon principal L'objectif est de remplacer les premiers éléments de chaque ligne de la liste principale, à savoir a, b, c, d, e par les éléments correspondants de la liste replace_by à savoir a1, b1, c1, d1, e1.

J'apprécierais que quelqu'un puisse m'aider avec ceci d'une manière pythonique! Merci d'avance!!

+1

Comment est-ce que "correspondant"? par index? side-note: les tuples sont immuables, vous ne pouvez pas "remplacer" quoi que ce soit à côté d'un tuple - vous pouvez en créer un nouveau! – alfasin

+1

Les tuples sont immuables, donc vous devrez utiliser une autre structure de données, ou * remplacer * les tuples plutôt que de les changer. Aussi, je me demande si vous ne voulez pas utiliser quelque chose comme une carte dans cette instance. Cela aiderait si vous expliquiez ce que vous essayez d'accomplir (et nous donnait un exemple de résultat attendu, comme le suggère @alfasin). – SwiftsNamesake

+0

Les tuples sont immuables, mais pas les listes à l'intérieur. Il pourrait utiliser 'main_list [0] [1] .append (replace_by [1])' et n'a aucun problème. –

Répondre

0

Les tuples ne peuvent pas être modifiés en place. Cependant, vous pouvez créer facilement une nouvelle version,

replace_by=['a1','b1','c1','d1','e1'] 
main_list=[('a',[]),('b',[]),('c',[]),('d',[]),('e',[])] 

new_list = [(replace_by[i],b)for (i,(a,b)) in enumerate(main_list)] 
print(new_list) 
1

Vous ne pouvez pas vraiment "remplacer" car les tuples sont immuables mais vous pouvez toujours faire de nouveaux tuples en utilisant le premier élément de la liste replace_by et le second de l'original main_list.

new_list = [(a,b[1]) for a,b in zip(replace_by,main_list)] 
+0

Cela m'a aidé! – Saaraj