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


144

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

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


2
LinuxのPython 2.6.6では動作しますが、その最初の行ではセットが作成されません。
11

2
によるとTypeError: 'set' object is not callable:何setですか?ありがとう
食べる

13
組み込みのセットをシャドウイングしました。たぶん、あなたが誤って入力したのset=set(first_list)か、何かを入力したのでしょう。今、setそのエラーの原因となるこのセットオブジェクトに再定義されます。新しいPythonインタープリターで再試行してください
John La Rooy

3
@gnibbler:それは明らかにそれを壊したのはそれだったので、それを答えとして入れるべきです。
Chris Morgan

2
問題を修正するために質問を編集したのは残念です。正しいコードの後に​​、生成されないエラーが続くのは混乱を招きます。実際、編集前の元の質問でも、表示されるエラーは発生しません。これはコピーアンドペーストのエラーだと思います。
LS

回答:


195

すでにリストです

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

4
私はタイプ(my_set)を行うとき、私は<型「セット」>を取得
ガテ

2
@gath、それはあなたがコードを編集する前でした。現在のコードは私のマシンで正常に動作します。それをそのままPythonインタープリターにコピーして貼り付けてみて、ここに出力を貼り付けてみてください
ユーザー

1
これを試してください:>>> my_list = [1,2,3,4] >>> my_set = set(my_list)>>> my_new_list = list(my_set)トレースバック(最後の最新の呼び出し):ファイル "<コンソール>"、 1行目<モジュール>のTypeError: 'set'オブジェクトは呼び出し不可能
gath

1
私は彼が誤って「セット」という名前を{1,2,3}または[1,2,3]またはそのようなものにバインドしたに違いない。(実験中に誤って行ったため)
user3556757 2014年

1
この方法を使用して整数リストを変換することは信頼できません。あなたのセットが([1,2,12,6])そうであるlist(([1,2,12,6]))なら、あなたは次のようなリストを取得します [1,2,1,2,6]
PradyJord

12

の代わりに:

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

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

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

これにより、リストから重複が削除され、リストが返されます。


5
両者に違いはありません。変数の割り当てをインライン化しました。

7

[編集済み]以前に「リスト」を変数名として使用して、次のように再定義したようです:

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

5

そのようなタイプの問題に悩まされているときはいつでも、次のコマンドを使用して、最初に変換する要素のデータ型を見つけてください。

type(my_set)

次に、以下を使用します。

  list(my_set) 

リストに変換します。新しく作成されたリストを、Pythonの通常のリストと同様に使用できるようになりました。


3

単にタイプする:

list(my_set)

これにより、{'1'、 '2'}形式のセットが['1'、 '2']形式のリストに変わります。


2

最初の行を確認します。スタックトレースは、ここに貼り付けたコードからのものではないので、何をしたのか正確にはわかりません。

>>> 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インスタンスを呼び出そうとしたことを意味します。


0

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

これらの角かっこは、次のように記述するだけで、式を囲みます。

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

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

注:(something, something_else)タプルを作成します(ただし、リストは作成されません)。


@gathあなたの編集は、少なくとも最初のブロックでは問題ないようです。まだエラーが発生していますか?新しいコマンドラインでこれを試すことができますか?入力するだけで何が得られますsetか?
ジョエル

0

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)

-1

うーん、以前のいくつかの行では次のようなものがあると思います:

list = set(something)

私が間違っている ?


上記の1つの回答で述べたように、あなたも同じ仮定を持っています。問題のメインコードでは、おそらくlist作成セットと同じになるように設定されていましたset(values)。そしてそれは混乱を引き起こしていました。あなたの答えは反対投票すべきではありません。しかし、それは読者を引っ掛けているわけではありません:)私達はただスキミングして間違ったことが反対投票されているのを見ています。
Vladimir Vukanac
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.