Python 中陣列和數字相乘時的注意事項說明

2022-09-28 10:57:09 字數 1782 閱讀 1388

[object] * n 的時候並沒有複製n-1個object,而是增加了n-1個對object的引用。

目標:生程式設計客棧成乙個10*10且所有值都是0的二維陣列

[ [0] * 10] * 10

[ [0 for _ in range(10) for _ in range(10)]

本以為兩種方法得到的結果是一樣,但是在使用時發現有些不一樣。如下面的**所示。

當僅僅更改a[2][2]的值的時候,a[k][2] (k取0到9)全部被更改成了4。

其實這是因為[object] * n 的時候並沒有複製n-1個object,而是增加了n-1個引用。

a = [ [0] * 10] * 10

b = [ [0 for _ in range(10)] for _ in range(10)]

a[2][2] = 4

b[2][2] = 4

for i in a:

print(i)

print("--------")

for i in b:

print(i)

[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]

程式設計客棧[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]

--------

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 0, 0, 0, 0程式設計客棧, 0, 0, 0, 0]

[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

補充:python 中numpy陣列與陣列使用*相乘的效果

import numpy as np

b = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])

a = np.array([150,270,150,270])

b2 = b * a

print(b)

print(a)

print(b2)

[[ 1 2 3 4]

[ 5 6 7 8]

[ 9 10 11 12]]

[150 270 150 270]

[[ 150 540 450 1080]

[ 750 1620 1050 2160]

[1350 2700 1650 3240]]

本文標題: python 中陣列和數字相乘時的注意事項說明

本文位址:

python中矩陣和陣列

我感覺張量是乙個統稱,陣列 矩陣這些都可被稱為張量。矩陣是陣列的特例。當陣列是二維的時候,就可以稱為矩陣。矩陣和二維陣列在某些場合可以通用。建立陣列 建立陣列時,錯誤的 將數值當作引數,array 裡面的引數應該是 9乙個列表或者乙個元組或者說在外觀上已經是乙個陣列了 numpy庫中的array將其...

python中煉表和陣列 Python

x 2020 9 12 12 24 上傳 2020 9 12 12 24 上傳 2020 9 12 12 24 上傳 曾經有個禿頂的面試官問了我乙個問題 陣列相對於鍊錶,為什麼我們都說陣列查詢效率快?python 大星 陣列占用的記憶體空間是連續的 面試官 還有其他的嗎?python 大星 以 in...

php陣列和數字比較

乙個資料和乙個數字型別比較後不會報錯 a len time 2834 var dump a 3600 執行的結果是 true,既沒有報錯,而且還為 true,有點疑惑不解。int被強制轉換?都不是只要是與 array 比較,一定是 array 大,這是 php 內部規定的,詳細看附錄參考鏈結。字串會...