Python – 1-2. List(2) –

2. リスト内包記法

for文を使ったリストへの代入を1行で記述できる手法。

リスト変数 = [ 式 for 変数 in 繰返しオブジェクト ]

記述例

>>> a=[x for x in range(5)]
>>> a
[0, 1, 2, 3, 4]

取得だけではなく、データ加工したい場合は式を使うこともできる。

>>> a=[x*2 for x in range(5)]
>>> a
[0, 2, 4, 6, 8]

>>> a=[x+1 for x in range(5)]
>>> a
[1, 2, 3, 4, 5]

変数部分に式を入れるとエラー。

>>> a=[x for x*2 in range(5)]
  File "<stdin>", line 1
SyntaxError: can't assign to operator

文字列の場合

>>> a=[x for x in 'abcde']
>>> a
['a', 'b', 'c', 'd', 'e']

ちなみにこれは、

a=list('abcde')

と書いても同じです。

if文を使用したリスト内包記法

リスト変数 = [ 真の場合の式 if 判定式 else 偽の場合の式 for 変数 in 繰返しオブジェクト ]

例)0~8のリストを対象に 2で割った余りを求め、奇数の場合は2倍, 偶数の場合は1/2する

>>> a=[x*2 if x%2==1 else x/2 for x in range(9)]
>>> a
[0.0, 2, 1.0, 6, 2.0, 10, 3.0, 14, 4.0]

2023-01-14

Posted by tfurukaw