私はpythonを学んでおり、セットの初期化について初心者の質問があります。テストを通して、次のようにセットを初期化できることを発見しました。
my_set = {'foo', 'bar', 'baz'}
次の標準的な方法とは対照的に、この方法で行うことには欠点がありますか?
my_set = set(['foo', 'bar', 'baz'])
それとも単にスタイルの問題ですか?
Set literal構文には2つの明らかな問題があります。
my_set = {'foo', 'bar', 'baz'}
Python 2.7より前には利用できませんでした
その構文を使用して空のセットを表現する方法はありません({}
を使用すると空の辞書が作成されます)
それらはあなたにとって重要かもしれないし、そうでないかもしれません。
この構文の概要を説明するドキュメントのセクションは、 here です。
{}
とset()
の違いも、1つのWord引数で比較します。
>>> a = set('aardvark')
>>> a
{'d', 'v', 'a', 'r', 'k'}
>>> b = {'aardvark'}
>>> b
{'aardvark'}
ただし、a
とb
は両方とももちろんセットです。
Python 3ドキュメント (python 2.7)にも同じことが言えます:
中括弧またはset()関数を使用してセットを作成できます。注:空のセットを作成するには、{}ではなくset()を使用する必要があります。後者は空の辞書を作成します。これは、次のセクションで説明するデータ構造です。
python 2.7の場合:
>>> my_set = {'foo', 'bar', 'baz', 'baz', 'foo'}
>>> my_set
set(['bar', 'foo', 'baz'])
{}
はmap
/dict
にも使用されることに注意してください:
>>> m = {'a':2,3:'d'}
>>> m[3]
'd'
>>> m={}
>>> type(m)
<type 'dict'>
包括的な構文を使用してセットを初期化することもできます。
>>> a = {x for x in """didn't know about {} and sets """ if x not in 'set' }
>>> a
set(['a', ' ', 'b', 'd', "'", 'i', 'k', 'o', 'n', 'u', 'w', '{', '}'])