リスト内包表記

イテレータからリストを作成

イテレータからリストを作成するときは、リスト内包表記が便利

1squar = [0, 1, 4, 9, 16, 25]

こんなリストを作るには

1squar = []
2for x in range(6):
3    squar.append(x**2)
4
5squar = list(map(lambda x:x**2, range(6)))

リスト内包表記を使うと

1squqr = [x**2 for x in range(6)]

リスト内包表記のネスト

リスト内包表記をネストすると後ろが内側

 1cell = [(x,y) for x in ['A', 'B'] for y in [1, 2]]
 2
 3[('A', 1), ('A', 2), ('B', 1), ('B', 2)]
 4
 5cell = []
 6for x in ['A', 'B']:
 7    for y in [1, 2]:
 8        cell.append((x,y))
 9
10[('A', 1), ('A', 2), ('B', 1), ('B', 2)]

条件をつけてリストを作成

1odd = [x for x in range(10) if x % 2 == 0]
2
3[1, 3, 5, 7, 9]

ifで評価した式が真となる要素のリストを作成する。
if elseとしたいときは 3 項演算子を使って

1even_or_odd = ['even' if x % 2 == 0 else 'odd' for x in range(10)]
2
3['even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd']