[Python] 234 複数のCSVファイル内検索 馬名からレース検索 リスト内包表記

一番時間の掛かるraceID検索のところをリスト内包表記で書いてみました。

そもそもopen文を組み込むことができるのか懐疑的だったものの、あっさり書けました。こんなややこしいのを共同開発の現場で見せられたらたまりませんね。

残念ながら時間短縮はならずです。C言語で書いてもそんなに変わらなさそうですが、短いコードなので検討してみても面白そうです。

元コード for文
--------------------------------------------------
raceID_l = list()
for y in range(start_year,2021 +1):
    for file in glob.glob(f'/horse_racing/race_result/{y}/*/*/*.csv'):
        with open (file, mode="r", encoding="shift_jis") as f:
            reader = csv.reader(f)
            for row in reader:
                if row[22] == id:
                    raceID_l.append(row[21])
--------------------------------------------------

リスト内包表記
--------------------------------------------------
raceID_l = [row[21] for y in range(start_year,2021 +1) \
for file in glob.glob(f'/horse_racing/race_result/{y}/*/*/*.csv') \
for row in csv.reader(open(file,mode="r", encoding="shift_jis")) \
if row[22]==id]
--------------------------------------------------