スポンサーリンク

内包表記でリストを初期化

内包表記でリストを初期化すると、コードもシンプルになりますし楽ですね。

※その他のリストの初期化方法は下記を参考にしてください。
参考:Pythonでリスト(配列)を初期化する方法:入門編

0~5までの数値で初期化するには下記のように書きます。
基本的な書き方になります。

list = [i for i in range(6)]

下記がサンプルコードになります。

$ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

#リストの初期化
list = [i for i in range(6)]
print("内包表記でリストを初期化")
print (list)

下記が実行結果になります。
$ ./sample.py 
内包表記でリストを初期化
[0, 1, 2, 3, 4, 5]

スポンサーリンク

if 条件文で内包表記

条件文を後ろに書いて、リストの中身を条件指定できます。

list = [i for i in range(6) if i % 2 == 0]

下記がサンプルコードになります。

$ cat sample2.py 
#!/usr/bin/env python3
# coding: UTF-8

list = [i for i in range(6) if i % 2 == 0]
print("偶数のみでリストを初期化")
print (list)

下記が実行結果になります。
$ ./sample2.py 
偶数のみでリストを初期化
[0, 2, 4]

奇数のみ出力。

$ cat sample3.py 
#!/usr/bin/env python3
# coding: UTF-8

list = [i for i in range(6) if i % 2 != 0]
print("奇数のみリストを初期化")
print (list)

下記が実行結果になります。
$ ./sample3.py 
奇数のみリストを初期化
[1, 3, 5]

if else の条件文で内包表記

if else の条件文で内包表記も書けます。

list = [i  if i % 2 == 0 else i * 100 for i in range(6)]

ただし、if文は後ろに付加しましたが、if else の場合は前に付加する必要があります。
ややこしいですね。

下記がサンプルコードになります。

$ cat sample4.py 
#!/usr/bin/env python3
# coding: UTF-8

#リストの初期化
list = [i  if i % 2 == 0 else i * 100 for i in range(6)]
print("偶数は100倍してリストを初期化")
print (list)

下記が実行結果になります。
$ ./sample4.py 
偶数は100倍してリストを初期化
[0, 100, 2, 300, 4, 500]

内包表記の出力を計算

iの値の計算結果をリストに格納することもできます。
下記は100倍しています。

list = [i * 100 for i in range(6) if i % 2 != 0]

下記がサンプルコードになります。
$ cat sample5.py 
#!/usr/bin/env python3
# coding: UTF-8

list = [i * 100 for i in range(6) if i % 2 != 0]
print("奇数のみ、100倍してリストを初期化")
print (list)

下記が実行結果になります。
$ ./sample5.py 
奇数のみ、100倍してリストを初期化
[100, 300, 500]

内包表記で2次元リスト

内包表記で2次元リストも作れます。

下記がサンプルコードになります。

$ cat sample6.py 
#!/usr/bin/env python3
# coding: UTF-8

list = [[i for _ in range(6)] for i in range(6)]
print("内包表記で2次元リストを初期化")
print (list)

下記が実行結果になります。
$ ./sample6.py 
内包表記で2次元リストを初期化
[[0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1], [2, 2, 2, 2, 2, 2], [3, 3, 3, 3, 3, 3], [4, 4, 4, 4, 4, 4], [5, 5, 5, 5, 5, 5]]

スポンサーリンク