159 Comment puis-je convertir un ensemble en liste en Python? En utilisant a = set(["Blah", "Hello"]) a = list(a) ne fonctionne pas. Ça me donne: TypeError: 'set' object is not callable python list set la source 6 Ce qui précède fonctionne pour moi sur Python 2.7. aukaost le 20 si vous avez nommé une autre variable dans votre code, setmodifiez-la car vous observez la fonction intégrée set. mouad le 5 @mouad Non, la chaîne entre parenthèses dans a TypeErrorest le nom du type , pas le nom de la variable phihag 7 @Judge John Deed: Vous l'avez fait list = some_setquelque part. Ajoutez print listavant de l'appeler. Jochen Ritzel le 6 J'ai rencontré ce problème lors du débogage dans PDB où «list» est remplacé en tant que commande PDB. WP McNeill Réponses: 242 Votre code ne travail (testé avec CPython 2.4, 2.5, 2.6, 2.7, 3.1 et 3.2): >>> a = set(["Blah", "Hello"]) >>> a = list(a) # You probably wrote a = list(a()) here or list = set() above >>> a ['Blah', 'Hello'] Vérifiez que vous n'avez pas écrasé listpar accident: >>> assert list == __builtins__.list Phihag la source 2 Je viens de copier et coller ce code exact dans IDLE; J'obtiens l'erreur. Pouvez-vous fournir la sortie de dir(set)et print set? Susam Pal ['and', 'class', 'cmp', 'contains', 'delattr', 'doc', 'eq', 'format', 'ge', 'getattribute', 'gt', 'hash', 'iand', 'init', 'ior', 'isub', 'iter', 'ixor', 'le', 'len', 'lt', 'ne', 'new', 'or', 'rand', 'reduce', 'reduce_ex', 'repr', 'ror', 'rsub', 'rxor', 'setattr', 'sizeof', 'str', 'sub', 'subclasshook', 'xor', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update'](supprimé __ en raison de la limite de caractères) @Judge John Deed À quelle ligne obtenez-vous l'erreur? Vous avez l' setair bien. phihag essayez Set au lieu de set: REF: docs.python.org/2/library/sets.html Gonzalo 72 Vous avez masqué l'ensemble intégré en l'utilisant accidentellement comme nom de variable, voici un moyen simple de reproduire votre erreur >>> set=set() >>> set=set() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'set' object is not callable La première ligne renvoie l'ensemble vers une instance de l'ensemble. La deuxième ligne tente d' appeler l'instance qui échoue bien sûr. Voici une version moins déroutante utilisant des noms différents pour chaque variable. Utiliser un nouvel interprète >>> a=set() >>> b=a() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'set' object is not callable Espérons qu'il est évident que l'appel aest une erreur John La Rooy la source 25 avant d'écrire, set(XXXXX) vous avez utilisé "set" comme variable, par exemple set = 90 #you have used "set" as an object … … a = set(["Blah", "Hello"]) a = list(a) Zhang Yiwei la source 15 Cela fonctionnera: >>> t = [1,1,2,2,3,3,4,5] >>> print list(set(t)) [1,2,3,4,5] Cependant, si vous avez utilisé "list" ou "set" comme nom de variable, vous obtiendrez le: TypeError: 'set' object is not callable par exemple: >>> set = [1,1,2,2,3,3,4,5] >>> print list(set(set)) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'list' object is not callable La même erreur se produira si vous avez utilisé "liste" comme nom de variable. pseudo la source 6 s = set([1,2,3]) print [ x for x in iter(s) ] peerxu la source 4 Votre code fonctionne avec Python 3.2.1 sur Win7 x64 a = set(["Blah", "Hello"]) a = list(a) type(a) <class 'list'> Wendal Chen la source 2 Essayez d'utiliser une combinaison de fonctions map et lambda: aList = map( lambda x: x, set ([1, 2, 6, 9, 0]) ) C'est une approche très pratique si vous avez un ensemble de nombres en chaîne et que vous souhaitez le convertir en liste d'entiers: aList = map( lambda x: int(x), set (['1', '2', '3', '7', '12']) ) J y vais, au revoir la source
242 Votre code ne travail (testé avec CPython 2.4, 2.5, 2.6, 2.7, 3.1 et 3.2): >>> a = set(["Blah", "Hello"]) >>> a = list(a) # You probably wrote a = list(a()) here or list = set() above >>> a ['Blah', 'Hello'] Vérifiez que vous n'avez pas écrasé listpar accident: >>> assert list == __builtins__.list Phihag la source 2 Je viens de copier et coller ce code exact dans IDLE; J'obtiens l'erreur. Pouvez-vous fournir la sortie de dir(set)et print set? Susam Pal ['and', 'class', 'cmp', 'contains', 'delattr', 'doc', 'eq', 'format', 'ge', 'getattribute', 'gt', 'hash', 'iand', 'init', 'ior', 'isub', 'iter', 'ixor', 'le', 'len', 'lt', 'ne', 'new', 'or', 'rand', 'reduce', 'reduce_ex', 'repr', 'ror', 'rsub', 'rxor', 'setattr', 'sizeof', 'str', 'sub', 'subclasshook', 'xor', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update'](supprimé __ en raison de la limite de caractères) @Judge John Deed À quelle ligne obtenez-vous l'erreur? Vous avez l' setair bien. phihag essayez Set au lieu de set: REF: docs.python.org/2/library/sets.html Gonzalo 72 Vous avez masqué l'ensemble intégré en l'utilisant accidentellement comme nom de variable, voici un moyen simple de reproduire votre erreur >>> set=set() >>> set=set() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'set' object is not callable La première ligne renvoie l'ensemble vers une instance de l'ensemble. La deuxième ligne tente d' appeler l'instance qui échoue bien sûr. Voici une version moins déroutante utilisant des noms différents pour chaque variable. Utiliser un nouvel interprète >>> a=set() >>> b=a() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'set' object is not callable Espérons qu'il est évident que l'appel aest une erreur John La Rooy la source 25 avant d'écrire, set(XXXXX) vous avez utilisé "set" comme variable, par exemple set = 90 #you have used "set" as an object … … a = set(["Blah", "Hello"]) a = list(a) Zhang Yiwei la source 15 Cela fonctionnera: >>> t = [1,1,2,2,3,3,4,5] >>> print list(set(t)) [1,2,3,4,5] Cependant, si vous avez utilisé "list" ou "set" comme nom de variable, vous obtiendrez le: TypeError: 'set' object is not callable par exemple: >>> set = [1,1,2,2,3,3,4,5] >>> print list(set(set)) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'list' object is not callable La même erreur se produira si vous avez utilisé "liste" comme nom de variable. pseudo la source 6 s = set([1,2,3]) print [ x for x in iter(s) ] peerxu la source 4 Votre code fonctionne avec Python 3.2.1 sur Win7 x64 a = set(["Blah", "Hello"]) a = list(a) type(a) <class 'list'> Wendal Chen la source 2 Essayez d'utiliser une combinaison de fonctions map et lambda: aList = map( lambda x: x, set ([1, 2, 6, 9, 0]) ) C'est une approche très pratique si vous avez un ensemble de nombres en chaîne et que vous souhaitez le convertir en liste d'entiers: aList = map( lambda x: int(x), set (['1', '2', '3', '7', '12']) ) J y vais, au revoir la source
72 Vous avez masqué l'ensemble intégré en l'utilisant accidentellement comme nom de variable, voici un moyen simple de reproduire votre erreur >>> set=set() >>> set=set() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'set' object is not callable La première ligne renvoie l'ensemble vers une instance de l'ensemble. La deuxième ligne tente d' appeler l'instance qui échoue bien sûr. Voici une version moins déroutante utilisant des noms différents pour chaque variable. Utiliser un nouvel interprète >>> a=set() >>> b=a() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'set' object is not callable Espérons qu'il est évident que l'appel aest une erreur John La Rooy la source
25 avant d'écrire, set(XXXXX) vous avez utilisé "set" comme variable, par exemple set = 90 #you have used "set" as an object … … a = set(["Blah", "Hello"]) a = list(a) Zhang Yiwei la source
15 Cela fonctionnera: >>> t = [1,1,2,2,3,3,4,5] >>> print list(set(t)) [1,2,3,4,5] Cependant, si vous avez utilisé "list" ou "set" comme nom de variable, vous obtiendrez le: TypeError: 'set' object is not callable par exemple: >>> set = [1,1,2,2,3,3,4,5] >>> print list(set(set)) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'list' object is not callable La même erreur se produira si vous avez utilisé "liste" comme nom de variable. pseudo la source
4 Votre code fonctionne avec Python 3.2.1 sur Win7 x64 a = set(["Blah", "Hello"]) a = list(a) type(a) <class 'list'> Wendal Chen la source
2 Essayez d'utiliser une combinaison de fonctions map et lambda: aList = map( lambda x: x, set ([1, 2, 6, 9, 0]) ) C'est une approche très pratique si vous avez un ensemble de nombres en chaîne et que vous souhaitez le convertir en liste d'entiers: aList = map( lambda x: int(x), set (['1', '2', '3', '7', '12']) ) J y vais, au revoir la source
set
modifiez-la car vous observez la fonction intégréeset
.TypeError
est le nom du type , pas le nom de la variablelist = some_set
quelque part. Ajoutezprint list
avant de l'appeler.Réponses:
Votre code ne travail (testé avec CPython 2.4, 2.5, 2.6, 2.7, 3.1 et 3.2):
Vérifiez que vous n'avez pas écrasé
list
par accident:la source
dir(set)
etprint set
?['and', 'class', 'cmp', 'contains', 'delattr', 'doc', 'eq', 'format', 'ge', 'getattribute', 'gt', 'hash', 'iand', 'init', 'ior', 'isub', 'iter', 'ixor', 'le', 'len', 'lt', 'ne', 'new', 'or', 'rand', 'reduce', 'reduce_ex', 'repr', 'ror', 'rsub', 'rxor', 'setattr', 'sizeof', 'str', 'sub', 'subclasshook', 'xor', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
(supprimé __ en raison de la limite de caractères)set
air bien.Vous avez masqué l'ensemble intégré en l'utilisant accidentellement comme nom de variable, voici un moyen simple de reproduire votre erreur
La première ligne renvoie l'ensemble vers une instance de l'ensemble. La deuxième ligne tente d' appeler l'instance qui échoue bien sûr.
Voici une version moins déroutante utilisant des noms différents pour chaque variable. Utiliser un nouvel interprète
Espérons qu'il est évident que l'appel
a
est une erreurla source
avant d'écrire,
set(XXXXX)
vous avez utilisé "set" comme variable, par exemplela source
Cela fonctionnera:
Cependant, si vous avez utilisé "list" ou "set" comme nom de variable, vous obtiendrez le:
par exemple:
La même erreur se produira si vous avez utilisé "liste" comme nom de variable.
la source
la source
Votre code fonctionne avec Python 3.2.1 sur Win7 x64
la source
Essayez d'utiliser une combinaison de fonctions map et lambda:
C'est une approche très pratique si vous avez un ensemble de nombres en chaîne et que vous souhaitez le convertir en liste d'entiers:
la source