リスト内包表記の基本

呼称: リスト内包表記
目的: コードの凝縮、簡潔化、map() 関数よりも応用性が高い
特徴: 条件判定ロジックを加えたリスト等の個々の要素に同じ操作を行える
用例: for ループの要素に if 文の条件を追加
備考: やり過ぎると、返ってコードが複雑化する
サンプル:

  • for ループの要素に if 文の条件を追加
>>> flist = ['sample.txt', 'list.py', 'tips.txt', 'mail.eml', 'writer.odt']
>>> flist
['sample.txt', 'list.py', 'tips.txt', 'mail.eml', 'writer.odt']
>>> [fname for fname in flist if fname[-4:] == '.txt']
['sample.txt', 'tips.txt']
  • 既存リストに変更を加える
>>> flist = [ x for x in range(1,10)]
>>> flist
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> flist[:] = [max(x, 5) for x in flist]
>>> flist
[5, 5, 5, 5, 5, 6, 7, 8, 9]
  • リストを含む既存リストの要素の削除と並び替え
>>> rlist = [ [x for x in range(1,5)], [x for x in range(5,9)], [x for x in range(9,13)] ]
>>> rlist
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
>>> rlist[:] = [ [row[i] for i in (0, 3, 2)] for row in rlist ]
>>> rlist
[[1, 4, 3], [5, 8, 7], [9, 12, 11]]