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.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
あなたが誤ってそれを変数名として使うことによって組み込みセットをシャドウしました、これはあなたのエラーを複製する簡単な方法です
>>> set=set()
>>> set=set()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable
最初の行は、setをinstance of setに再バインドします。 2行目はcallもちろん失敗したインスタンスを使おうとしています。
これは、各変数に異なる名前を使用して、混乱を少なくするバージョンです。新鮮な通訳を使う
>>> 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"を使っていました。
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"を使用した場合は、次のようになります。
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"を使用した場合も同じエラーが発生します。
s = set([1,2,3])
print [ x for x in iter(s) ]
あなたのコードはWin7 x64上のPython 3.2.1で動作します
a = set(["Blah", "Hello"])
a = list(a)
type(a)
<class 'list'>
マップとラムダ関数の組み合わせを使ってみてください。
aList = map( lambda x: x, set ([1, 2, 6, 9, 0]) )
文字列の中に数字のセットがあり、それを整数のリストに変換したい場合はとても便利な方法です。
aList = map( lambda x: int(x), set (['1', '2', '3', '7', '12']) )