0
0

More than 1 year has passed since last update.

"Pythonのforループ内でリストを更新する時の注意点:上書きと追加の違い"

Posted at

Pythonでループ内でリストを更新する際には注意が必要です。特に、上書き(=)と追加(extend)の違いは重要です。次の2つのコードスニペットを考えてみましょう。

1つ目のコードスニペット:

ex1.py
for i in range(5):
    # iの2乗の値をリストに格納
    squares = [i ** 2]
    print(squares)

2つ目のコードスニペット:

ex2.py
squares = []
for i in range(5):
    # iの2乗の値をリストに追加
    squares.extend([i ** 2])
    print(squares)

これらのコードは、ループの各ステップで数値の2乗を計算し、それをsquaresリストに格納しようとしています。しかし、これらの振る舞いは全く異なります。

1つ目のコードでは、ループの各ステップで新しい2乗の数値が計算され、それが新しいリストとしてsquaresに上書きされます。その結果、squaresにはループの各ステップで新しく生成されるリスト(つまり、1つの2乗の数値だけを持つ)が上書きされていきます。

一方、2つ目のコードでは、ループの各ステップで新しい2乗の数値が計算され、それがsquaresリストに追加されていきます。extendメソッドを用いているため、squaresにはループの各ステップで計算された2乗の数値がすべて格納され、リストが順次拡張されていきます。

これらの違いを理解することで、Pythonでリストを更新する際の予期しない挙動を防ぐことができます。

0
0
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
0
0