web-dev-qa-db-ja.com

Pythonをリストに設定

Pythonで集合をリストに変換するにはどうすればいいですか?を使う

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

うまくいきません。それは私を与えます:

TypeError: 'set' object is not callable
140
user825286

あなたのコード動作します(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
225
phihag

あなたが誤ってそれを変数名として使うことによって組み込みセットをシャドウしました、これはあなたのエラーを複製する簡単な方法です

>>> 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の呼び出しがエラーであることは明らかです。

67
John La Rooy

set(XXXXX)を書く前は、変数として "set"を使っていました。

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

これは動作します:

>>> 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"を使用した場合も同じエラーが発生します。

13
Nick
s = set([1,2,3])
print [ x for x in iter(s) ]
6
peerxu

あなたのコードはWin7 x64上のPython 3.2.1で動作します

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

マップとラムダ関数の組み合わせを使ってみてください。

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

文字列の中に数字のセットがあり、それを整数のリストに変換したい場合はとても便利な方法です。

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