1
1

More than 3 years have passed since last update.

どこかで見たことのあるpython3の内包表記(List、辞書)

Last updated at Posted at 2020-02-02

はじめに

pythonのお勉強がてらの自分メモです
サンプルソースの動作確認は「Google Colaboratory」でやってます。

Listの内包表記

for文でリスト作成

test.py
list = [] 

for i in range(5):
    list.append(x)
print(list)

# => [0, 1, 2, 3, 4]

内包表記でリスト作成

test.py
list = [i for i in range(5)] 
print(list)

# => [0, 1, 2, 3, 4]

なんとifも使える

ifをつけることによりList内の要素が減ります
補足 内包表記内のifはif節と呼びます

test.py
# 【for文】偶数だけListに入れる
list = [] 
for i in range(10):
    if i % 2 == 0:
        list.append(i)
print(list)
# => [0, 2, 4, 6, 8]

# 【内包表記】偶数だけListに入れる
list = [i for i in range(10) if i % 2 == 0] 
print(list)

# => [0, 2, 4, 6, 8]

さらにif-elseも使える・・・ただし可読性がいいかは謎。。。

補足 内包表記内のif-elseは条件式と呼びます

test.py
# 【for文】「偶数」「奇数」と入れる
list = [] 
for i in range(10):
    if i % 2 == 0:
        list.append("偶数")
    else:
        list.append("奇数")
print(list)
# => ['偶数', '奇数', '偶数', '奇数', '偶数', '奇数', '偶数', '奇数', '偶数', '奇数']

# 【内包表記】「偶数」「奇数」と入れる
list = ["偶数" if i % 2 == 0 else "奇数" for i in range(10)] 
print(list)

# => ['偶数', '奇数', '偶数', '奇数', '偶数', '奇数', '偶数', '奇数', '偶数', '奇数']

辞書の内包表記

for文で辞書作成

test.py
dict = {}
key_list = [1, 2, 3]
value_list = ["abc", "def", "xyz"]

for i in range(len(key_list)):
    key = key_list[i]
    value = value_list[i]
    dict[key] = value
print(dict) 
# => {1: 'abc', 2: 'def', 3: 'xyz'}

内包表記で辞書作成

test.py
key_list = [1, 2, 3]
value_list = ["abc", "def", "xyz"]

dict = {key : value for key, value in zip(key_list, value_list)}
print(dict)
# => {1: 'abc', 2: 'def', 3: 'xyz'}

終わりに

内包表記で書くとだいぶ短くなるますね、慣れるまではちょっと読みづらいけど・・・。

これ書いてる時、
昔SI屋の下請けでjava書いてた頃「三項演算子」とか読めねーし、短くなるから使うな(怒)
と元請け社員様に言われたことを何故か思い出しましたw

短くなる ⇒ 最近の子は知らんだろうけど、昔はステップ単価という見積もりが・・(ry

謝辞

コメントを頂いたshiracamusさんありがとうございます

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1