web-dev-qa-db-fra.com

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?

134
gath

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
180
user

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.

12
tonym415

[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
7
Ruslan Grohovetsky

Lorsque vous êtes coincé dans ce type de problèmes, essayez d’abord de trouver le type de données de l’élément que vous voulez convertir en utilisant:

type(my_set)

Ensuite, utilisez:

  list(my_set) 

pour le convertir en liste. Vous pouvez utiliser la liste nouvellement construite comme toute liste normale dans python maintenant.

4
Pawan Kumar

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 "not callable" signifie que vous faites quelque chose comme set()() - essayez d'appeler une instance set.

2
Chris Morgan

Tapez simplement:

list(my_set)

Cela transformera un ensemble sous la forme {'1', '2'} en une liste sous la forme ['1', '2'].

2
Jesse

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

0
Joël

Python est un langage typé dynamiquement, ce qui signifie que vous ne pouvez pas définir le type de la variable comme vous le faites en C ou C++:

type variable = value

ou

type variable(value)

En Python, vous utilisez la contrainte si vous modifiez les types, ou les fonctions init (constructeurs) des types pour déclarer une variable d'un type:

my_set = set([1,2,3])
type my_set

vous donnera <type 'set'> pour une réponse.

Si vous avez une liste, faites ceci:

my_list = [1,2,3]
my_set = set(my_list)
0
tmaric