Python 中數(shù)組和數(shù)字相乘時(shí)的注意事項(xiàng)說明
[object] * n 的時(shí)候并沒有復(fù)制n-1個(gè)object,而是增加了n-1個(gè)對object的引用。
例子說明目標(biāo):生成一個(gè)10*10且所有值都是0的二維數(shù)組
方法一:[ [0] * 10] * 10方法二:
[ [0 for _ in range(10)] for _ in range(10)]
本以為兩種方法得到的結(jié)果是一樣,但是在使用時(shí)發(fā)現(xiàn)有些不一樣。如下面的代碼所示。
當(dāng)僅僅更改a[2][2]的值的時(shí)候,a[k][2] (k取0到9)全部被更改成了4。
其實(shí)這是因?yàn)閇object] * n 的時(shí)候并沒有復(fù)制n-1個(gè)object,而是增加了n-1個(gè)引用。
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]
補(bǔ)充:python 中numpy數(shù)組與數(shù)組使用*相乘的效果
輸入:import numpy as npb = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])a = np.array([150,270,150,270])b2 = b * aprint(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]]
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章:
1. chat.asp聊天程序的編寫方法2. jsp EL表達(dá)式詳解3. asp知識整理筆記4(問答模式)4. IntelliJ IDEA 統(tǒng)一設(shè)置編碼為utf-8編碼的實(shí)現(xiàn)5. 解決ajax的delete、put方法接收不到參數(shù)的問題方法6. Django ORM實(shí)現(xiàn)按天獲取數(shù)據(jù)去重求和例子7. idea修改背景顏色樣式的方法8. XML入門的常見問題(一)9. Jsp中request的3個(gè)基礎(chǔ)實(shí)踐10. 怎樣才能用js生成xmldom對象,并且在firefox中也實(shí)現(xiàn)xml數(shù)據(jù)島?
