Как преобразовать набор в список в python?
Я пытаюсь преобразовать набор в список в Python 2.6. Я использую этот синтаксис:
first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)
Однако я получаю следующую трассировку стека:
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: 'set' object is not callable
Как я могу это исправить?
Ответы
Ответ 1
Это уже список
type(my_set)
>>> <type 'list'>
Вы хотите что-то вроде
my_set = set([1,2,3,4])
my_list = list(my_set)
print my_list
>> [1, 2, 3, 4]
ИЗМЕНИТЬ:
Вывод вашего последнего комментария
>>> 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]
Мне интересно, если вы сделали что-то вроде этого:
>>> set=set()
>>> set([1,2])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable
Ответ 2
Вместо:
first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)
Почему бы не сократить процесс:
my_list = list(set([1,2,3,4])
Это удалит дубликаты из списка и вернет вам список.
Ответ 3
[Изменено]
Кажется, вы ранее переопределили "список", используя его как имя переменной, например:
list = set([1,2,3,4]) # oops
#...
first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)
И вы получите
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: 'set' object is not callable
Ответ 4
Всякий раз, когда вы застреваете в таких проблемах, попробуйте найти тип элемента, который вы хотите преобразовать, используя:
type(my_set)
Затем используйте:
list(my_set)
чтобы преобразовать его в список. Теперь вы можете использовать недавно созданный список, как любой обычный список в python.
Ответ 5
Просмотрите свою первую строку. Ваша трассировка стека явно не из кода, который вы вставили здесь, поэтому я не знаю точно, что вы сделали.
>>> 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'>
То, что вы хотели, было 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'>
Исключение "не вызываемое" означает, что вы делали что-то вроде set()()
- пытались вызвать экземпляр set
.
Ответ 6
Я не уверен, что вы создаете набор с этим синтаксисом ([1, 2])
, а не списком. Чтобы создать набор, вы должны использовать set([1, 2])
.
Эти скобки просто охватывают ваше выражение, как если бы вы написали:
if (condition1
and condition2 == 3):
print something
На самом деле не игнорируются, но ничего не делают для вашего выражения.
Примечание: (something, something_else)
создаст кортеж (но все равно нет списка).
Ответ 7
Python - это динамически типизированный язык, что означает, что вы не можете определить тип переменной, как в C или С++:
type variable = value
или
type variable(value)
В Python вы используете принуждение, если вы меняете типы, или функции init (конструкторы) типов для объявления переменной типа:
my_set = set([1,2,3])
type my_set
предоставит вам <type 'set'>
ответ.
Если у вас есть список, сделайте следующее:
my_list = [1,2,3]
my_set = set(my_list)
Ответ 8
Просто введите:
list(my_set)
Это превратит набор в форме {'1', '2'} в список в форме ['1', '2'].
Ответ 9
Хммм, я уверен, что в некоторых предыдущих строках у вас есть что-то вроде:
list = set(something)
Я не прав?