Как преобразовать набор в список в Python? Используя
a = set(["Blah", "Hello"])
a = list(a)
не работает. Это дает мне:
TypeError: 'set' object is not callable
Как преобразовать набор в список в Python? Используя
a = set(["Blah", "Hello"])
a = list(a)
не работает. Это дает мне:
TypeError: 'set' object is not callable
Ваш код работает (тестируется с помощью cpython 2.4, 2.5, 2.6, 2.7, 3.1 и 3.2):
>>> a = set(["Blah", "Hello"])
>>> a = list(a) # You probably wrote a = list(a()) here or list = set() above
>>> a
['Blah', 'Hello']
Убедитесь, что вы случайно не перезаписали list
:
>>> assert list == __builtins__.list
Вы затеняли встроенный набор, случайно используя его как имя переменной, вот простой способ реплицировать вашу ошибку.
>>> set=set()
>>> set=set()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable
Первая строка переупорядочивает набор экземпляров. Вторая строка пытается вызвать экземпляр, который, конечно, терпит неудачу.
Вот более запутанная версия, использующая разные имена для каждой переменной. Использование свежего интерпретатора
>>> a=set()
>>> b=a()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable
Надеюсь, что вызов a
является ошибкой
прежде чем писать set(XXXXX)
вы использовали "set" в качестве переменной
например
set = 90 #you have used "set" as an object
…
…
a = set(["Blah", "Hello"])
a = list(a)
Это будет работать:
>>> t = [1,1,2,2,3,3,4,5]
>>> print list(set(t))
[1,2,3,4,5]
Однако, если вы использовали "список" или "установить" в качестве имени переменной, вы получите:
TypeError: 'set' object is not callable
например:
>>> 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
Такая же ошибка возникает, если вы использовали "список" в качестве имени переменной.
Ваш код работает с Python 3.2.1 на Win7 x64
a = set(["Blah", "Hello"])
a = list(a)
type(a)
<class 'list'>
s = set([1,2,3])
print [ x for x in iter(s) ]
Попробуйте использовать комбинацию карт и лямбда-функций:
aList = map( lambda x: x, set ([1, 2, 6, 9, 0]) )
Это очень удобный подход, если у вас есть набор чисел в строке, и вы хотите преобразовать его в список целых чисел:
aList = map( lambda x: int(x), set (['1', '2', '3', '7', '12']) )