内包表記

内包表記
ひとつ以上のイテレーターからPythonでーた構造をコンパクトに作れる
形式。内包表記を使えば、ループや条件テストを寡黙な構文で結合できる
リスト内包表記
1から5までの整数のリスト-1
>>>number_list = []
>>>number_list.append(1)
>>>number_list.append(2)
>>>number_list.append(3)
>>>number_list.append(4)
>>>number_list.append(5)
>>>number_list
>>>print(number_list)
[1, 2, 3, 4, 5]
forループとrange()関数でも作れる
>>>number_list = []
>>>for number in range(1,6):
>>> number_list.append(number)
>>>print(number_list)
[1, 2, 3, 4, 5]
リスト内包表記を使った方がPython らしくなる
>>>number_list = [number for number in rang(1,6)]
>>>print(number_list)
[1, 2, 3, 4, 5]
[ expression for item in iterzble if condition]
1から5までの奇数だけのリスト
number_list = [number for number in range(1,6) if number % 2 == 1]
[1, 2, 3, 4, 5]
ループをねすとできるのと同じように、内包表記でもfor...節
を複数使うことができる。
まず、古くからのネスト
>>>rows = range(1,4)
>>>cols = range(1,3)
>>>for row in rows:
>>> for col in cols:
>>> print(row, col)
1 1
1 2
2 1
2 2
3 1
3 2
内包表記を使って結果を(row. col)形式のタプルにしてcells変数に
代入する
>>>rows = range(1,4)
>>>cols = range(1,3)
>>>cells = [(row,col) for row in rows for col in cols]
>>>for cell in cells:
>>> print(cell)
(1, 1)
(1, 2)
(2, 1)
(2, 2)
(3, 1)
(3, 2)
タプルのアンパックを使って、cllsリストを反復処理しながら
row,colを引き抜くこともできる
>>>for row,col in cells:
>>> print(row, col)
1 1
1 2
2 1
2 2
3 1
3 2