Python 中數(shù)組和數(shù)字相乘時的注意事項(xiàng)說明
[object] * n 的時候并沒有復(fù)制n-1個object,而是增加了n-1個對object的引用。
例子說明目標(biāo):生成一個10*10且所有值都是0的二維數(shù)組
方法一:[ [0] * 10] * 10方法二:
[ [0 for _ in range(10)] for _ in range(10)]
本以為兩種方法得到的結(jié)果是一樣,但是在使用時發(fā)現(xiàn)有些不一樣。如下面的代碼所示。
當(dāng)僅僅更改a[2][2]的值的時候,a[k][2] (k取0到9)全部被更改成了4。
其實(shí)這是因?yàn)閇object] * n 的時候并沒有復(fù)制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]
補(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]]
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章:
1. 用xslt+css讓RSS顯示的跟網(wǎng)頁一樣漂亮2. 利用CSS制作3D動畫3. CSS3實(shí)現(xiàn)動態(tài)翻牌效果 仿百度貼吧3D翻牌一次動畫特效4. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁的方法5. 存儲于xml中需要的HTML轉(zhuǎn)義代碼6. HTML5 Canvas繪制圖形從入門到精通7. 讀大數(shù)據(jù)量的XML文件的讀取問題8. html5手機(jī)觸屏touch事件介紹9. 讓chatgpt將html中的圖片轉(zhuǎn)為base64方法示例10. 《CSS3實(shí)戰(zhàn)》筆記--漸變設(shè)計(jì)(一)
