- リスト内包表記がなかなか馴染めなかったので、整理した
コードmemo
# 通常のforループを使用した場合
doubled_evens = []
for i in range(1, 11):
if i % 2 == 0:
doubled_evens.append(i * 2)
print("通常のforループ: ", doubled_evens)
# リスト内包表記を使用した場合
doubled_evens_2 = []
doubled_evens_2 = [i * 2 for i in range(1, 11) if i % 2 == 0]
print("リスト内包表記: ", doubled_evens_2)
通常のforループ: [4, 8, 12, 16, 20]
リスト内包表記: [4, 8, 12, 16, 20]
リスト内包表記を使用するメリット
- コード行数が減る
- どのようなリストを作りたいかを直接的に表現できる(コードの焦点が異なる)
- for文ループ→どのようにそれを行うか
- リスト内包表記→何をするか
- パフォーマンスの向上(内部で最適化されている)
- この理由が大きいコードでは一番効いてくるかも→コードで確かめてみる
for文ループ vs リスト内包表記
実行種類 |
実行時間(秒) |
forループ |
238.490651845932 |
リスト内包表記 |
95.48136496543884 |
for文ループの場合
import time
# 通常のforループを使う場合
start_time = time.time()
squared_numbers = []
for _ in range(1000): # 1000回繰り返し
for i in range(1000000): # 100万回の二乗計算
squared_numbers.append(i * i)
end_time = time.time()
print("実行時間:", end_time - start_time)
- 実行結果
実行時間: 238.490651845932
リスト内包表記の場合
import time
# リスト内包表記を使う場合
start_time = time.time()
for _ in range(1000): # 1000回繰り返し
squared_numbers = [i * i for i in range(1000000)] # 100万回の二乗計算
end_time = time.time()
print("実行時間:", end_time - start_time)
- 実行結果
実行時間: 95.48136496543884
memo
- リスト内包表記ははじめだと読みにくく感じる。慣れてきたらこちらの方が読みやすく感じるかも?
- 大きいコードでは実行時間が大きく変わるので意識的に使って慣れたい
コメント