如何在 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

我该怎么补救?

398522 次浏览

这已经是一个清单:

>>> type(my_set)
<class '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, 2])语法创建了一个集,而是创建了一个列表。要创建一个集合,应该使用 set([1, 2])

这些括号将你的表达式包裹起来,就好像你会写:

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

没有真正的忽视,但不要做你的表情。

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

复习你的第一句台词。您的堆栈跟踪显然不是来自您粘贴到这里的代码,所以我不知道您具体做了什么。

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

“ not callable”异常意味着您正在执行类似于 set()()的操作——尝试调用 set实例。

[编辑] 似乎您之前已经重新定义了“ 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

Python 是一种动态类型化的语言,这意味着您不能像在 C 或 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)

嗯,我敢打赌,在前面的一些台词中,你有这样的东西:

list = set(something)

我说错了吗?

而不是:

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

为什么不缩短这个过程:

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

这将从你的列表中删除欺骗,并返回一个列表给你。

无论何时遇到这种类型的问题,都要先使用以下方法找到要转换的元素的数据类型:

type(my_set)

然后,使用:

  list(my_set)

现在你可以像 Python 中的普通 list 一样使用新建的 list 了。

简单输入:

list(my_set)

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