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?
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
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.
[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
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.
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
.
Tapez simplement:
list(my_set)
Cela transformera un ensemble sous la forme {'1', '2'} en une liste sous la forme ['1', '2'].
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).
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)