Python 中數(shù)組和數(shù)字相乘時(shí)的注意事項(xiàng)說明
[object] * n 的時(shí)候并沒有復(fù)制n-1個(gè)object,而是增加了n-1個(gè)對(duì)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. Python的文本常量與字符串模板之string庫(kù)2. SpringBoot+TestNG單元測(cè)試的實(shí)現(xiàn)3. 利用CSS制作3D動(dòng)畫4. .Net加密神器Eazfuscator.NET?2023.2?最新版使用教程5. jsp+servlet簡(jiǎn)單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))6. Springboot 全局日期格式化處理的實(shí)現(xiàn)7. Java GZip 基于內(nèi)存實(shí)現(xiàn)壓縮和解壓的方法8. 完美解決vue 中多個(gè)echarts圖表自適應(yīng)的問題9. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼10. JAMon(Java Application Monitor)備忘記
