Python设置为列表

146 python list set

如何在Python中将集合转换为列表?运用

a = set(["Blah", "Hello"])
a = list(a)
Run Code Online (Sandbox Code Playgroud)

不起作用.它给了我:

TypeError: 'set' object is not callable
Run Code Online (Sandbox Code Playgroud)

phi*_*hag 232

您的代码确实有效(使用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']
Run Code Online (Sandbox Code Playgroud)

检查您是否list意外覆盖:

>>> assert list == __builtins__.list
Run Code Online (Sandbox Code Playgroud)

  • 我只是将这个确切的代码复制并粘贴到了IDLE中;我得到了错误。 (2认同)

Joh*_*ooy 68

您通过意外地将其用作变量名称来隐藏内置集,这是一种复制错误的简单方法

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

第一行重新绑定设置为set的实例.第二行是试图调用当然失败的实例.

这是一个不太混乱的版本,为每个变量使用不同的名称.使用新的翻译

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

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

  • +1表示它发生的原因 (6认同)

Zha*_*wei 25

在你写之前你set(XXXXX) 已经使用"set"作为变量,例如

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


Nic*_*ick 14

这将有效:

>>> t = [1,1,2,2,3,3,4,5]
>>> print list(set(t))
[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

但是,如果您使用"list"或"set"作为变量名称,您将获得:

TypeError: 'set' object is not callable
Run Code Online (Sandbox Code Playgroud)

例如:

>>> 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
Run Code Online (Sandbox Code Playgroud)

如果您使用"list"作为变量名称,则会出现相同的错误.


pee*_*rxu 6

s = set([1,2,3])
print [ x for x in iter(s) ]
Run Code Online (Sandbox Code Playgroud)