如何将一个集合转换为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 

我怎样才能解决这个问题?

这已经是一个列表

 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 

代替:

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

为什么不简化stream程:

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

这将删除你的名单,并返回一个列表给你。

[编辑]你似乎早些时候已经重新定义“列表”,使用它作为variables名称,如下所示:

 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 

无论什么时候遇到这种types的问题,尝试使用以下命令来首先查找要转换的元素的数据types:

 type(my_set) 

然后,使用:

  list(my_set) 

将其转换为列表。 你可以像Python中的任何普通列表一样使用新build列表。

检查你的第一行。 你的堆栈跟踪显然不是你粘贴在这里的代码,所以我不知道你做了什么。

 >>> 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'> 

“不可调用”exception意味着你正在做一些像set()() – 尝试调用一个set实例。

我不确定你是用这个([1, 2])语法创build一个集合,而是一个列表。 要创build一个集合,你应该使用set([1, 2])

这些括号只是包含你的表情,就像你会写:

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

有没有真的被忽视,但对你的expression没有做任何事情。

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

Python是一种dynamictypes语言,这意味着您不能像在C或C ++中那样定义variables的types:

 type variable = value 

要么

 type variable(value) 

在Python中,如果更改types或强制types的init函数(构造函数)来声明一个types的variables,则使用强制:

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

会给你<type 'set'>作答案。

如果你有一个列表,请执行以下操作:

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

嗯,我敢打赌,在一些以前的行中,你有这样的事情:

 list = set(something) 

我错了吗 ?