copier tuple dans liste

copier tuple dans liste - Python - Programmation

Marsh Posté le 14-09-2018 à 17:44:42    

Bonjour,
 
En Python3 si j'écris :
>>> a=(1,2)
>>> b=[a[0],a[1]]
>>> print (a,b)
(1, 2) [1, 2]
 
Une liste b est crée à partir du tuple a.
 
Mais si on ajoute :
>>> a[0]=3
 
On se retrouve avec le message d'erreur : TypeError: 'tuple' object does not support item assignment
 
Pourquoi le a[0] marchait dans b=[a[0],a[1] et pas dans a[0]=3 ? Je suppose qu'il doit y avoir un changement de type dans le premier cas mais si quelqu'un pouvait m'expliquer clairement...
 
Sinon j'aurais aussi pu écrire :
>>> b = [i for i in a]
>>> print(a,b)
(1, 2) [1, 2]
 
Qu'elle est la meilleure solution à votre avis et pourquoi ?
 
Cordialement.
 

Reply

Marsh Posté le 14-09-2018 à 17:44:42   

Reply

Marsh Posté le 15-09-2018 à 15:54:38    

salut,
 
pour convertir un tuple en list :
b = list(a)
 
le reste j'ai pas tout compris, mais si y'a une chose que tu n'as apparemment pas compris c'est qu'on ne peut pas modifier un tuple, ils sont immutables.


Message édité par hadrial le 15-09-2018 à 15:54:52
Reply

Marsh Posté le 15-09-2018 à 20:37:57    

OK, je comprends : on peut le lire mais pas y écrire.
Merci pour le list(), je l'avais oublié celui-là.
 
Du coup il y a bien au moins 3 façons de copier un tuple dans une liste. Il doit bien y en avoir une plus efficace que les autres en termes de temps, à voir...

Reply

Marsh Posté le 15-09-2018 à 21:53:09    

siliconsensor a écrit :

Du coup il y a bien au moins 3 façons de copier un tuple dans une liste. Il doit bien y en avoir une plus efficace que les autres en termes de temps, à voir...


Il y a une tétrachiée de moyens de copier un itérable dans une liste [:spamafote]

 

Et franchement si c'est ça qui limite les perfs de ton soft, t'es dans une merde noire, et python n'est probablement pas l'outil adéquat dans tous les cas. Mais la réponse à ton interrogation est assez certainement

Code :
  1. b = [*a]


Message édité par masklinn le 15-09-2018 à 21:54:19

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed