pythonの波括弧と角括弧の違いは何ですか?
A ={1,2}
B =[1,2]
端末でA
とB
を印刷しても違いはありません。本当ですか?
そして、時々、いくつかのコードが{}
と[]
を使用して異なる変数を初期化することに気付きました。
例えば。 A=[]
、B={}
そこに違いはありますか?
中括弧は、 辞書 または セット を作成します。角括弧は、 リスト を作成します。
それらはliteralsと呼ばれます;セットリテラル:
aset = {'foo', 'bar'}
または辞書リテラル:
adict = {'foo': 42, 'bar': 81}
empty_dict = {}
またはリストリテラル:
alist = ['foo', 'bar', 'bar']
empty_list = []
空のセットを作成するには、set()
のみを使用できます。
セットはunique要素のコレクションであり、順序付けすることはできません。リストは要素の順序付けられたシーケンスであり、値を繰り返すことができます。辞書はキーを値にマップします。キーは一意でなければなりません。 Pythonが実際にそれらを効率的に追跡し、それらが一意であり、今後もそうであることがわかるように、セットおよびディクショナリキーも他の制限を満たす必要があります。
Tuple
type もあり、1つ以上の要素にコンマを使用します。多くのコンテキストでは括弧はオプションです。
atuple = ('foo', 'bar')
another_Tuple = 'spam',
empty_Tuple = ()
WARNING_not_a_Tuple = ('eggs')
another_Tuple
定義のコンマに注意してください。括弧ではなくTuple
にするのはそのコンマです。 WARNING_not_a_Tuple
はタプルではなく、コンマを持ちません。括弧がなければ、代わりに文字列だけが残ります。
詳細については、Pythonチュートリアルの データ構造の章 を参照してください。リストは 紹介の章 で紹介されています。
これらのようなコンテナのリテラルは displays とも呼ばれ、構文はcomprehensionsと呼ばれるループに基づくコンテンツの手続き型作成を可能にします。
彼らはさまざまなタイプを作成します。
>>> type({})
<type 'dict'>
>>> type([])
<type 'list'>
>>> type({1, 2})
<type 'set'>
>>> type({1: 2})
<type 'dict'>
>>> type([1, 2])
<type 'list'>
これら2つのブレースは、異なる目的に使用されます。リストにいくつかの要素を含め、インデックス番号(0から始まる)で整理する場合は、[]
を使用し、必要に応じて要素を追加します。 {}
は、a = {"John": 14}
などの値にカスタムIDを指定できるという点で特別です。これで、年齢のリストを作成し、誰の年齢がどこにあるかを覚える代わりに、a["John"]
でJohnの年齢にアクセスできます。
[]
はリストと呼ばれ、{}
は辞書(Pythonで)と呼ばれます。辞書は基本的にリストの便利な形式であり、これによりデータにはるかに簡単にアクセスできます。
ただし、辞書には注意が必要です。多くの場合、辞書に入れたデータは以前と同じ順序のままではありません。したがって、各値を1つずつ確認すると、期待した順序になりません。これを回避するための特別な辞書がありますが、この行を追加する必要がありますfrom collections import OrderedDict
と{}
をOrderedDict()
で置き換えます。しかし、私はあなたが今のところそれについて心配する必要があるとは思わない。