Python

【Python】1行のfor文でリストの初期化を行う


for文を利用したリストの初期化は、通常の書き方では複数行のプログラムになってしまいますが、1行だけにまとめることも可能です。

本記事では、1行だけのfor文でリストの初期化を行う方法について解説します。

実際にプログラムを作成してみる

1行だけのfor文でリストの初期化を行う方法の概要、実装例を紹介します。

基本的な書き方

「1行だけのif文による変数の初期化」の基本的な書き方は以下の通りです。

リスト = [i for i in range(a, b, c)]
...
  a~bの値をc刻みでリストに格納

実装例

上記の書き方を基にプログラムを作成します。

if __name__ == '__main__':

    arr_a = [i for i in range(5)]
    print(arr_a)

    arr_b = [i for i in range(5, 10)]
    print(arr_b)

    arr_c = [i for i in range(0, 50, 5)]
    print(arr_c)

このプログラムを実行すると以下の出力結果が得られます。

[0, 1, 2, 3, 4]
[5, 6, 7, 8, 9]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45]

実装例 – if文を追加

上記の書き方にif文を追加して初期化のバリエーションを増やすことも可能です。

if __name__ == '__main__':

    arr_a = [i for i in range(10) if i%2!=0]
    print(arr_a)

    arr_b = [i if i%2!=0 else 0 for i in range(10)]
    print(arr_b)

このプログラムを実行すると以下の出力結果が得られます。

[1, 3, 5, 7, 9]
[0, 1, 0, 3, 0, 5, 0, 7, 0, 9]