はじめに
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さんありがとうございます