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行使う。
以上。ではノシ
近況報告:
研究室の締め作業を先輩に教えてもらった。これで一人前のラボメン。早くマイマグを買わなくては。