ひよこの外部記憶

めもおきば

リスト内包表記

参考:みんなの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])]


書きながら&読みながら慣れていきたいもんです。