リストの最初のインデックスに値を割り当てると、値が変わるのはなぜですか?

エルハム・カーン

定義した関数の戻り値は、リストの最初の()インデックスThreeByThreeに割り当てると、変化して1ずつ加算されます。ただし、連続した割り当ては有効です。私の印刷ステートメントの結果をご覧くださいnewImage[0][0]

def boxBlur(image):
  lenVert = len(image)
  lenHorz = len(image[0])
  newImage = [[0] * (lenHorz - 2)] * (lenVert - 2)
  def ThreeByThree(a,b,image):
    k = 0
    total = 0
    for i in range(a, a + 3):
      for j in range(b, b + 3):
        k = image[i][j]
        total += k
    return int(total / 9)

  for i in range(0, lenVert - 2):
    for j in range(0, lenHorz - 2):
      print(ThreeByThree(i, j, image))
      newImage[i][j] = ThreeByThree(i, j, image)  # This is where the assignment goes wrong
  return newImage

image = [[7, 4, 0, 1], 
         [5, 6, 2, 2], 
         [6, 10, 7, 8], 
         [1, 4, 2, 0]]
print(boxBlur(image))

期待される出力:

5
4
4
4
 [[5, 4], [4, 4]]

出力:

5
4
4
4
 [[4, 4], [4, 4]]
benvc

問題はnewImage*演算子を使用して作成しているリストが、相互に参照するサブリストを作成していることです。その結果、相互に参照するため、実際にnewImage[0][0]割り当てるときの値を変更しますnewImage[1][0]例えば:

newImage = [[0] * 2] * 2

newImage[0][0] = 5
print(newImage)
# [[5, 0], [5, 0]]

newImage[1][0] = 4
print(newImage)
# [[4, 0], [4, 0]]

代わりに、サブリストが相互に参照しないように初期リストを作成します(*サブリスト内の整数値は不変であるため、演算子を使用して乗算できます)。

newImage = [[0] * (lenHorz - 2) for _ in range(lenVert - 2)]

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

リストのスライスに新しい値を割り当てると、Pythonで元のリストが変更されるのはなぜですか

分類Dev

インスタンスブロックで最終的な静的変数に値を割り当てることができないのはなぜですか?

分類Dev

カンマ区切りの値のリストを括弧で囲むと、割り当てが変わるのはなぜですか?

分類Dev

リストスライスを別の変数に割り当てると結果が変わるのはなぜですか?

分類Dev

Python:リスト値をインラインで割り当てると「None」要素のリストが返されるのはなぜですか?

分類Dev

リストインデックスとしてブール値を使用できるのはなぜですか?

分類Dev

インクリメントで、値とインクリメントの代わりに変数の値が渡されるのはなぜですか?

分類Dev

値のない変数にインターフェイスを割り当てることができるのはなぜですか?

分類Dev

Golangで空のスライスの最初のインデックスに値を割り当てる方法は?

分類Dev

同じ値を割り当てるとサブスクライブハンドラーがトリガーされるのはなぜですか?

分類Dev

この反復的なリスト成長コードはなぜIndexError:リスト割り当てインデックスが範囲外になるのですか?

分類Dev

右辺値に値を割り当てるこのC ++スニペットがコンパイルされるのはなぜですか?

分類Dev

シェルスクリプトが出力の最初の数値を切り捨てるのはなぜですか?

分類Dev

配列参照にキャストするとポインタの値が変わるのはなぜですか?

分類Dev

リスト内の値に対してインデックスが-1として返されるのはなぜですか?

分類Dev

ループで割り当てられたときに、松のスクリプト4の整数変数がseries [integer]に変わるのはなぜですか?

分類Dev

値2をsiに追加すると、インデックスが1だけインクリメントされるのはなぜですか?

分類Dev

マイクロコントローラのメモリ値にアクセスしているときに、データ値の終わりを指しているのはなぜですか?

分類Dev

あるインスタンスの値を変更すると、別のインスタンスの値が変わるのはなぜですか?

分類Dev

ループが最後のインデックス要素の参照を割り当てるのはなぜですか?

分類Dev

変数の値を入力する代わりに、このインスタンスで変数を使用する必要があるのはなぜですか?

分類Dev

クラス属性に割り当てられた関数がインスタンスメソッドとして扱われるのはなぜですか?

分類Dev

インデックスの合計が何らかの値になるすべてのエントリに割り当てる

分類Dev

逆の操作を使用すると、リストに「none」の値が割り当てられるのはなぜですか?

分類Dev

値を変更するときに関数のインデックスを介してリストアイテムにアクセスすると機能するのに、イテレータ変数の方法では機能しないのはなぜですか?

分類Dev

動的変数にバイト値を割り当てると、c#のバイトデータ型に動的に変更されるのはなぜですか?

分類Dev

「if」ステートメントを個別に使用したり、「if」内で「if」を使用したりすると、値が変わるのはなぜですか?

分類Dev

Numpy:なぜ 'マトリックスを別のマトリックスのインデックス付き部分に割り当てることができるのですか?

分類Dev

Pythonリストにリストとして追加すると変数の値が変わるのはなぜですか?

Related 関連記事

  1. 1

    リストのスライスに新しい値を割り当てると、Pythonで元のリストが変更されるのはなぜですか

  2. 2

    インスタンスブロックで最終的な静的変数に値を割り当てることができないのはなぜですか?

  3. 3

    カンマ区切りの値のリストを括弧で囲むと、割り当てが変わるのはなぜですか?

  4. 4

    リストスライスを別の変数に割り当てると結果が変わるのはなぜですか?

  5. 5

    Python:リスト値をインラインで割り当てると「None」要素のリストが返されるのはなぜですか?

  6. 6

    リストインデックスとしてブール値を使用できるのはなぜですか?

  7. 7

    インクリメントで、値とインクリメントの代わりに変数の値が渡されるのはなぜですか?

  8. 8

    値のない変数にインターフェイスを割り当てることができるのはなぜですか?

  9. 9

    Golangで空のスライスの最初のインデックスに値を割り当てる方法は?

  10. 10

    同じ値を割り当てるとサブスクライブハンドラーがトリガーされるのはなぜですか?

  11. 11

    この反復的なリスト成長コードはなぜIndexError:リスト割り当てインデックスが範囲外になるのですか?

  12. 12

    右辺値に値を割り当てるこのC ++スニペットがコンパイルされるのはなぜですか?

  13. 13

    シェルスクリプトが出力の最初の数値を切り捨てるのはなぜですか?

  14. 14

    配列参照にキャストするとポインタの値が変わるのはなぜですか?

  15. 15

    リスト内の値に対してインデックスが-1として返されるのはなぜですか?

  16. 16

    ループで割り当てられたときに、松のスクリプト4の整数変数がseries [integer]に変わるのはなぜですか?

  17. 17

    値2をsiに追加すると、インデックスが1だけインクリメントされるのはなぜですか?

  18. 18

    マイクロコントローラのメモリ値にアクセスしているときに、データ値の終わりを指しているのはなぜですか?

  19. 19

    あるインスタンスの値を変更すると、別のインスタンスの値が変わるのはなぜですか?

  20. 20

    ループが最後のインデックス要素の参照を割り当てるのはなぜですか?

  21. 21

    変数の値を入力する代わりに、このインスタンスで変数を使用する必要があるのはなぜですか?

  22. 22

    クラス属性に割り当てられた関数がインスタンスメソッドとして扱われるのはなぜですか?

  23. 23

    インデックスの合計が何らかの値になるすべてのエントリに割り当てる

  24. 24

    逆の操作を使用すると、リストに「none」の値が割り当てられるのはなぜですか?

  25. 25

    値を変更するときに関数のインデックスを介してリストアイテムにアクセスすると機能するのに、イテレータ変数の方法では機能しないのはなぜですか?

  26. 26

    動的変数にバイト値を割り当てると、c#のバイトデータ型に動的に変更されるのはなぜですか?

  27. 27

    「if」ステートメントを個別に使用したり、「if」内で「if」を使用したりすると、値が変わるのはなぜですか?

  28. 28

    Numpy:なぜ 'マトリックスを別のマトリックスのインデックス付き部分に割り当てることができるのですか?

  29. 29

    Pythonリストにリストとして追加すると変数の値が変わるのはなぜですか?

ホットタグ

アーカイブ