Python configurado a la lista

¿Cómo puedo convertir un conjunto a una lista en Python? Utilizando

a = set(["Blah", "Hello"]) a = list(a) 

no funciona Me da:

 TypeError: 'set' object is not callable 

Su código funciona (probado con cpython 2.4, 2.5, 2.6, 2.7, 3.1 y 3.2):

 >>> a = set(["Blah", "Hello"]) >>> a = list(a) # You probably wrote a = list(a()) here or list = set() above >>> a ['Blah', 'Hello'] 

Verifique que no haya sobrescrito la list por accidente:

 >>> assert list == __builtins__.list 

Has ensombrecido el conjunto integrado al usarlo accidentalmente como nombre de variable, aquí hay una forma sencilla de replicar tu error.

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

La primera línea se vuelve a unir a una instancia de set. La segunda línea está tratando de llamar a la instancia que por supuesto falla.

Aquí hay una versión menos confusa que usa nombres diferentes para cada variable. Usando un intérprete nuevo

 >>> a=set() >>> b=a() Traceback (most recent call last): File "", line 1, in  TypeError: 'set' object is not callable 

Esperemos que sea obvio que llamar a es un error.

antes de escribir set(XXXXX) ha usado “set” como variable, por ejemplo

 set = 90 #you have used "set" as an object … … a = set(["Blah", "Hello"]) a = list(a) 

Esto funcionará:

 >>> t = [1,1,2,2,3,3,4,5] >>> print list(set(t)) [1,2,3,4,5] 

Sin embargo, si ha usado “lista” o “conjunto” como nombre de variable, obtendrá:

 TypeError: 'set' object is not callable 

p.ej:

 >>> set = [1,1,2,2,3,3,4,5] >>> print list(set(set)) Traceback (most recent call last): File "", line 1, in  TypeError: 'list' object is not callable 

Se producirá el mismo error si ha utilizado “lista” como nombre de variable.

 s = set([1,2,3]) print [ x for x in iter(s) ] 

Tu código funciona con Python 3.2.1 en Win7 x64

 a = set(["Blah", "Hello"]) a = list(a) type(a)  

Intenta usar una combinación de funciones de mapa y lambda:

 aList = map( lambda x: x, set ([1, 2, 6, 9, 0]) ) 

Es un método muy conveniente si tiene un conjunto de números en una cadena y desea convertirlo en una lista de enteros:

 aList = map( lambda x: int(x), set (['1', '2', '3', '7', '12']) )