LoginSignup
1
1

for文で意外とやりがちなミス

Posted at

背景

「あれ?このAPIちゃんと動いてなくね?」という恐ろしいバグを見つけてしまった時にAPI覗いて、意外とやってしまいがちなミスだなと思ったので書きます。

例えばこんなコード。意図してるのは複数のアイテムを処理すること。

items_to_process = [101, 102, 103]
processed_items = []

for item_id in items_to_process:
    processed_items = [item_id * 10]

print(processed_items)

問題の解説

だが実際には最後のアイテムのみがprocessed_itemsに保持される。
processed_itemsリストが各イテレーションで上書きされ、期待されていた全てのアイテムIDが処理されず、最終的に最後の要素のみが残る。

ちゃんとappendしよう

items_to_process = [101, 102, 103]
processed_items = []

for item_id in items_to_process:
    # 各イテレーションで得られたアイテムをリストに追加し、全てのアイテムが処理されるようにする
    processed_items.append(item_id * 10)

print(processed_items)  # 期待通り、全てのアイテムIDが処理された結果が出力される

appendしてループを使ったリスト操作時の変数上書きを防ごう。

おわり

1
1
1

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