2016-03-24 7 views
2

時々私はリストを持っているので、それを使っていくつかの設定をしたいと思っています。私は何をすることのようなものを書くことです:私は、Python 2.7から、あなたも直接{1,2,3}を言ってセットを定義することができることを発見し{}を使用してリストからセットを作成する

>>> mylist = [1,2,3] 
>>> myset = set(mylist) 
{1, 2, 3} 

今日、それを定義するための同等の方法であるように思われます。

次に、この構文を使用して特定のリストからセットを作成できるかどうかを確認しました。

{list}は、1つの要素、つまりリストのみを含むセットを作成しようとするため、失敗します。リストはハッシュできない。だから、

>>> mylist = [1,2,3] 
>>> {mylist} 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unhashable type: 'list' 

、私は疑問に思う:代わりにset(){}構文を使用して、リストからセットを作成する方法はありますか?

+8

'{my_listという中のため}'。 –

+1

あなたの質問に対する短い答えはいいえです。 –

+0

関連(恐らくdupe):[Pythonセット:なぜmy_set = {* my_list}が無効ですか?](http://stackoverflow.com/q/36199066/3821804) – GingerPlusPlus

答えて

2

を使用することができます:Python Set: why is my_set = {*my_list} invalid?を。あなたはそれは、Python 2では動作しませんPythonの3.5

>>> my_list = [1,2,3,4,5] 
>>> my_set = {*my_list} 
>>> my_set 
    {1, 2, 3, 4, 5} 

を使用している場合、私の質問は、あなたの答えが含まれています(それは私の質問だった)

4

基本的には等価ではありません(式vs関数)。 {}をpythonに追加する主な目的は、の解説list comprehensionなど)の設定があり、ハッシュ可能なオブジェクトを渡してそのセットを作成することもできます。あなたが反復可能で{}を使用してセットを作成したい場合

だから、あなたは次のように設定した理解を使用することができます。

{item for item in iterable} 

また、空の括弧はPythonで辞書ではないセットを表すことに注意してください。したがって、空のセットを作成するには、set()関数を使用してください。

1

あなたは、私が最近、関連する質問をし

>>> ls = [1,2,3] 
>>> {i for i in ls} 
{1,2,3} 
関連する問題