Python设置为列表

我如何将一个集合转换为Python中的列表? 运用

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

不起作用。 它给了我:

 TypeError: 'set' object is not callable 

你的代码确实可行(用cpython 2.4,2.5,2.6,2.7,3.1和3.2testing):

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

你不小心使用它作为variables名称来影响内置,这是一个简单的方法来复制你的错误

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

第一行rebinds设置为set的一个实例 。 第二行是试图调用当然失败的实例。

这是一个不太令人困惑的版本,每个variables使用不同的名称。 使用一个新的口译员

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

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

在写set(XXXXX)你已经使用“set”作为variables了

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

这将工作:

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

但是,如果你已经使用“list”或“set”作为variables名,你将得到:

 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”作为variables名称,则会发生相同的错误。

您的代码在Win7 x64上与Python 3.2.1兼容

 a = set(["Blah", "Hello"]) a = list(a) type(a) <class 'list'> 
 s = set([1,2,3]) print [ x for x in iter(s) ] 

尝试使用map和lambda函数的组合:

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

如果在string中有一组数字,并且要将其转换为整数列表,这是非常方便的方法:

 aList = map( lambda x: int(x), set (['1', '2', '3', '7', '12']) )