[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 內部規定的,詳細看附錄參考鏈結。字串會...