如何在python中将一个集转换为一个列表?

时间:2011-07-06 09:08:37

标签: python list set python-2.6

我正在尝试将一个集转换为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

我该如何解决这个问题?

9 个答案:

答案 0 :(得分:176)

它已经是一个列表

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

答案 1 :(得分:11)

而不是:

first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)

为什么不快捷这个过程:

my_list = list(set([1,2,3,4])

这将从您列表中删除欺骗并将列表返回给您。

答案 2 :(得分:7)

[EDITED] 看来你之前已经重新定义了“list”,将它用作变量名,如下所示:

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

答案 3 :(得分:4)

每当遇到此类问题时,请尝试使用以下命令查找要转换的元素的数据类型:

type(my_set)

然后,使用:

  list(my_set) 

将其转换为列表。您现在可以像python中的任何普通列表一样使用新构建的列表。

答案 4 :(得分:2)

查看您的第一行。您的堆栈跟踪显然不是您在此处粘贴的代码,因此我不确切知道您已完成的操作。

>>> 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实例。

答案 5 :(得分:2)

简单键入:

list(my_set)

这会将{'1','2'}形式的集合转换为['1','2']形式的列表。

答案 6 :(得分:0)

我不确定您是使用此([1, 2])语法创建集合,而是使用列表。要创建集合,您应该使用set([1, 2])

这些括号只是包含你的表达式,就像你写的那样:

if (condition1
    and condition2 == 3):
    print something

没有真正被忽视,但对你的表达无所作为。

注意:(something, something_else)将创建一个元组(但仍然没有列表)。

答案 7 :(得分:0)

Python是一种动态类型语言,这意味着您无法像在C或C ++中那样定义变量的类型:

type variable = value

type variable(value)

在Python中,如果更改类型或类型的init函数(构造函数),则使用coercing来声明类型的变量:

my_set = set([1,2,3])
type my_set

会给你<type 'set'>一个答案。

如果您有列表,请执行以下操作:

my_list = [1,2,3]
my_set = set(my_list)

答案 8 :(得分:-2)

嗯,我打赌,在以前的某些行中,你有类似的东西:

list = set(something)

我错了吗?