Python 设置为列表

如何在 Python 中将一个集合转换为一个列表? 使用

a = set(["Blah", "Hello"])
a = list(a)

不起作用。它给我:

TypeError: 'set' object is not callable
399331 次浏览

您的代码 是的可以工作(使用 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

您的代码可以在 Win7 x64上使用 Python 3.2.1

a = set(["Blah", "Hello"])
a = list(a)
type(a)
<class 'list'>

您已经隐藏了内置集,因为您不小心使用了它作为变量名,这里有一个简单的方法来复制您的错误

>>> set=set()
>>> set=set()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable

第一行重新绑定到 set 的 例子。第二行是尝试 打电话的实例,当然会失败。

下面是一个不那么令人困惑的版本,对每个变量使用不同的名称

>>> a=set()
>>> b=a()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable

希望很明显,调用 a是一个错误

尝试结合使用 map 和 lambda 函数:

aList = map( lambda x: x, set ([1, 2, 6, 9, 0]) )

这是一种非常方便的方法,如果你有一组字符串中的数字,你想把它转换成整数列表:

aList = map( lambda x: int(x), set (['1', '2', '3', '7', '12']) )
s = set([1,2,3])
print [ x for x in iter(s) ]

这将奏效:

>>> t = [1,1,2,2,3,3,4,5]
>>> print list(set(t))
[1,2,3,4,5]

但是,如果使用“ list”或“ set”作为变量名,则会得到:

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

如果使用“ list”作为变量名,也会发生同样的错误。

在你写 set(XXXXX)之前 您使用“ set”作为变量 例如:。

set = 90 #you have used "set" as an object
…
…
a = set(["Blah", "Hello"])
a = list(a)