159 votes

Comment convertir un ensemble en liste en python?

J'essaie de convertir un ensemble en liste dans Python 2.6. J'utilise cette syntaxe:

 first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)
 

Cependant, j'obtiens la trace de pile suivante:

 Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: 'set' object is not callable
 

Comment puis-je réparer cela?

218voto

buffer Points 2261

C'est déjà une liste

 type(my_set)
>>> <type 'list'>
 

Voulez-vous quelque chose comme

 my_set = set([1,2,3,4])
my_list = list(my_set)
print my_list
>> [1, 2, 3, 4]
 

EDIT: sortie de votre dernier commentaire

 >>> my_list = [1,2,3,4]
>>> my_set = set(my_list)
>>> my_new_list = list(my_set)
>>> print my_new_list
[1, 2, 3, 4]
 

Je me demande si vous avez fait quelque chose comme ça:

 >>> set=set()
>>> set([1,2])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable
 

13voto

tonym415 Points 31

Au lieu de:

 first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)
 

Pourquoi ne pas raccourcir le processus:

 my_list = list(set([1,2,3,4])
 

Cela supprimera les dupes de votre liste et vous renverra une liste.

10voto

[EDITED] Il semble que vous ayez précédemment redéfini "list", en l'utilisant comme nom de variable, comme ceci:

 list = set([1,2,3,4]) # oops
#...
first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)
 

Et vous obtenez

 Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: 'set' object is not callable
 

2voto

Chris Morgan Points 22285

Révisez votre première ligne. Votre trace de pile ne provient clairement pas du code que vous avez collé ici, donc je ne sais pas exactement ce que vous avez fait.

 >>> my_set=([1,2,3,4])
>>> my_set
[1, 2, 3, 4]
>>> type(my_set)
<type 'list'>
>>> list(my_set)
[1, 2, 3, 4]
>>> type(_)
<type 'list'>
 

Ce que tu voulais, c'était set([1, 2, 3, 4]) .

 >>> my_set = set([1, 2, 3, 4])
>>> my_set
set([1, 2, 3, 4])
>>> type(my_set)
<type 'set'>
>>> list(my_set)
[1, 2, 3, 4]
>>> type(_)
<type 'list'>
 

L'exception "non appelable" signifie que vous avez fait quelque chose comme set()() - en essayant d'appeler une instance set .

0voto

Joël Points 1201

Je ne suis pas sûr que vous créez un ensemble avec cette syntaxe ([1, 2]) , plutôt une liste. Pour créer un ensemble, vous devez utiliser set([1, 2]) .

Ces crochets enveloppent simplement votre expression, comme si vous auriez écrit:

 if (condition1
    and condition2 == 3):
    print something
 

Il ne sont pas vraiment ignorés, mais ne faites rien pour votre expression.

Remarque: (something, something_else) créera un tuple (mais toujours pas de liste).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X