Pythonのリスト内包表記について

※自分用勉強メモです

目指せワンライナー。実行速度は通常のfor文より速いらしい。
(filter, mapの代わりになる文法でもある)

基本

リスト内包表記はすべてリストで返ってくる。もとのリストは変更されない。

>>> array = [1,2,3]
>>> new_array = [x**2 for x in array]
>>> new_array
[1, 4, 9]
>>> array
[1, 2, 3]
for文のネスト

for文のネストもリスト内包表記だと一行で書ける。
例えば2重リストarrayをフラットにしたいとき、

>>> array = [[1,2,3],[4,5,6],[7],[8,9]]
>>> new_array1 = [item for sublist in array for item in sublist]
>>> new_array1
[1, 2, 3, 4, 5, 6, 7, 8, 9]

このように一行で書くことができる。ちなみにfor文で書いてみようとすると、

>>> array = [[1,2,3],[4,5,6],[7],[8,9]]
>>> new_array2 = []
>>> for sublist in array:
...     for item in sublist:
...         new_array2.append(item)
>>> new_array2
[1, 2, 3, 4, 5, 6, 7, 8, 9]

空の配列の定義を含めて4行使う。

以上。ではノシ


近況報告:
研究室の締め作業を先輩に教えてもらった。これで一人前のラボメン。早くマイマグを買わなくては。