リスト内包表記
参考:みんなのPython
ちょっとしたforでの処理もインデントを入れなければならない
⇒リスト内包表記があるじゃない的な感じ
例えば以下の2つのプログラムは等価
l=[] for x in (1,2,3): for y in (100,200,300): l.append(x+y)
l = [x+y for x in (1,2,3) for y in (100,200,300)]
出力:[101, 201, 301, 102, 202, 302, 103, 203, 303]
短くてイイネ!
リスト内包表記 IN リスト内包表記
得られる物は「リスト」なので要素の一つをリストで欲しい場合は↓みたいに書けます
[(x , [・・・]) for x in range()]
約数を求めるプログラム
[(x,[y for y in range(1,x+1) if x%y == 0]) for x in range(1,13)]
出力:[(1, [1]), (2, [1, 2]), (3, [1, 3]), (4, [1, 2, 4]), (5, [1, 5]), (6, [1, 2, 3, 6]), (7, [1, 7]), (8, [1, 2, 4, 8]), (9, [1, 3, 9]), (10, [1, 2, 5, 10]), (11, [1, 11]), (12, [1, 2, 3, 4, 6, 12])]
書きながら&読みながら慣れていきたいもんです。