web-dev-qa-db-ja.com

Pythonでセットをリストに変換する方法は?

Python 2.6でセットをリストに変換しようとしています。私はこの構文を使っています:

first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)

しかし、私は以下のスタックトレースを取得します。

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

どうすればこれを修正できますか?

133
gath

すでにリストです

type(my_set)
>>> <type 'list'>

あなたは何かが好きですか

my_set = set([1,2,3,4])
my_list = list(my_set)
print my_list
>> [1, 2, 3, 4]

編集:最後のコメントの出力

>>> my_list = [1,2,3,4]
>>> my_set = set(my_list)
>>> my_new_list = list(my_set)
>>> print my_new_list
[1, 2, 3, 4]

私はあなたがこのようなことをしたのではないかと思います:

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

の代わりに:

first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)

プロセスを短縮しないのはなぜですか。

my_list = list(set([1,2,3,4])

これはあなたのリストから重複を取り除き、あなたにリストを返します。

11
tonym415

[編集]あなたが以前に "list"を再定義したようで、それを変数名として使っています。

list = set([1,2,3,4]) # oops
#...
first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)

そしてあなたが得るでしょう

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

このような問題に悩まされているときはいつでも、あなたが最初に変換したい要素のデータ型を見つけることを試みなさい:

type(my_set)

その後、使用します:

  list(my_set) 

それをリストに変換する。 pythonの通常のリストと同じように、新しく作られたリストを使うことができます。

4
Pawan Kumar

最初の行を見直してください。あなたのスタックトレースは明らかにここに貼り付けたコードからのものではないので、私はあなたがしたことを正確には知りません。

>>> my_set=([1,2,3,4])
>>> my_set
[1, 2, 3, 4]
>>> type(my_set)
<type 'list'>
>>> list(my_set)
[1, 2, 3, 4]
>>> type(_)
<type 'list'>

欲しいのはset([1, 2, 3, 4])です。

>>> my_set = set([1, 2, 3, 4])
>>> my_set
set([1, 2, 3, 4])
>>> type(my_set)
<type 'set'>
>>> list(my_set)
[1, 2, 3, 4]
>>> type(_)
<type 'list'>

「呼び出し不可」の例外は、set()() - setインスタンスを呼び出そうとしているようなことをしていることを意味します。

2
Chris Morgan

単純に入力してください。

list(my_set)

これは{'1'、 '2'}の形の集合を['1'、 '2']の形のリストに変えるでしょう。

2
Jesse

リストではなく、この([1, 2])構文を使用してセットを作成しているのかどうかわかりません。セットを作成するには、set([1, 2])を使用する必要があります。

これらの括弧は、あたかもあなたが書いたであろうかのように、単にあなたの表現を覆っているのです。

if (condition1
    and condition2 == 3):
    print something

本当に無視されることはありませんが、あなたの表現には何もしません。

注:(something, something_else)はTupleを作成します(それでもリストはありません)。

0
Joël

Pythonは動的型付け言語です。つまり、CまたはC++の場合のように変数の型を定義することはできません。

type variable = value

または

type variable(value)

Pythonでは、型、あるいは型のinit関数(コンストラクタ)を変更して型の変数を宣言する場合は、強制変換を使用します。

my_set = set([1,2,3])
type my_set

答えを<type 'set'>にします。

あなたがリストを持っているならば、これをしてください:

my_list = [1,2,3]
my_set = set(my_list)
0
tmaric