Python

【Python/for文】リストの内包表記

Pythonでのプログラミング解説記事をメインに投稿しています。Twitterもやっているので良かったらフォローお願いします!

リストの内包表記

内包表記を使用することでリストを生成するためにコードを省略することができます。
多重for文やネストするようなリストの場合は視認性も悪くなってしまうので、使用には注意が必要です。

比較的単純なfor文を書くときは積極的に使うと、コードを省略できて視認性向上や楽をすることができます。

基本的な記述方法

内包表記を使わない書き方

num_list = []
for i in range(7):
    num_list.append(i**2)
print(num_list)

>>>[0, 1, 4, 9, 16, 25, 36]

内包表記を使った書き方

num_list = [i**2 for i in range(7)]
print(num_list)

>>>[0, 1, 4, 9, 16, 25, 36]

条件付き(ifのみ)

内包表記を使わない書き方

conditional_list1 = []
for i in range(7):
    if i%2 == 0:
        conditinal_list1.append(i**2)
print(conditional_list1)

>>>[0, 4, 16, 36]

内包表記を使った書き方

conditional_list1 = [i**2 for i in range(7) if i%2==0]
print(conditional_list1)

>>>[0, 4, 16, 36]

条件付き(if, else)

内包表記を使わない書き方

conditional_list2 = []
for i in range(5):
    if i%2 == 0:
        conditional_list2.append(i**2)
    else:
        conditional_list2.append(i)

print(conditional_list2)

>>>[0, 1, 4, 3, 16]

内包表記を使った書き方

conditional_list2 = [i**2 if i%2==0 else i for i in range(5)]
print(conditional_list2)

ポイント

ifのみを使った内包表記と違い、for文の前に条件式を記述する点に注意!

おまけ:辞書の内包表記

内包表記はリスト以外にも辞書等にも使用することができます。参考に辞書の内包表記の例を載せておきます。基本的にはリストの内包表記と変わらないので応用的に使ってもらるといいと思います。

subjects = ['国語', '数学', '理科', '社会', '英語']
subjects_dict = {n:subject for n,subject in enumerate(subjects)}
print(subjects_dict)

>>>{0: '国語', 1: '数学', 2: '理科', 3: '社会', 4: '英語'}

おすすめの参考書

みんなのPython 第4版【電子書籍】[ 柴田 淳 ]



退屈なことはPythonにやらせよう





-Python

© 2021 OFFD