Pythonの基本の基本(データ型やfor,if)などを覚えた後、
コードを読んでいると、なんじゃこりゃ!と思うものがあります。
自分の経験上、一つはwith構文、もう一つがリスト内包表記です。
リスト内包表記とは
リスト内包表記とは以下の様な表記です。
dat = [i for i in range(10)] print dat # [0,1,2,3,4,5,6,7,8,9]
Pythonにしては非常に読みにくい表現です。
リスト内包表記は何かと言いますと、
リスト生成を1行で書く表現(ワンライナー)です。
forとの違い
先ほどのリスト内包表記とforを比較して見ましょう。
dat_1 = [i for i in range(10)] dat_2 = [] for i in range(10): dat_2.append(i)
dat_1もdat2も内容は同じリストになります。
じゃあ、forだけでも良いのでは?
と思うのですが、裏で走っている処理に違いがあり、
リスト内包表記の方が処理される速度が早くなります。
対して、for文は様々な処理が書けますから、
複雑な処理を書くにはforを使った方が書き手としては楽です。
(そもそもforはリスト生成以外にも使用しますしね)
▼リストに格納する値をifなどで制御する場合もあります
辞書を作成する内包表記
リストではなく辞書を作る場合は、[]ではなく、{}を使用します。
dic = {str(i):i for i in range(10)} """ 以下と同じ dic = {} for i in range(10): dic[str(i)] = i """
リスト内包表記を用いて、シンプルに書ける場合には積極的に使用しましょう。
逆に初心者であれば、出会うことも多いので、出来る限り早く覚えることが重要です。
▼{}辞書型と関係が深いjsonファイルの扱い方はこちら
▼リストや辞書と似た集合(セット)の扱いはこちら esu-ko.hatenablog.com