Python 中數(shù)組和數(shù)字相乘時的注意事項說明
[object] * n 的時候并沒有復(fù)制n-1個object,而是增加了n-1個對object的引用。
例子說明目標:生成一個10*10且所有值都是0的二維數(shù)組
方法一:[ [0] * 10] * 10方法二:
[ [0 for _ in range(10)] for _ in range(10)]
本以為兩種方法得到的結(jié)果是一樣,但是在使用時發(fā)現(xiàn)有些不一樣。如下面的代碼所示。
當僅僅更改a[2][2]的值的時候,a[k][2] (k取0到9)全部被更改成了4。
其實這是因為[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]
補充: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)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章:
1. ASP動態(tài)網(wǎng)頁制作技術(shù)經(jīng)驗分享2. vue項目登錄成功拿到令牌跳轉(zhuǎn)失敗401無登錄信息的解決3. php使用正則驗證密碼字段的復(fù)雜強度原理詳細講解 原創(chuàng)4. JSP+Servlet實現(xiàn)文件上傳到服務(wù)器功能5. uniapp自定義驗證碼輸入框并隱藏光標6. 淺談由position屬性引申的css進階討論7. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向8. CSS可以做的幾個令你嘆為觀止的實例分享9. vue前端RSA加密java后端解密的方法實現(xiàn)10. asp批量添加修改刪除操作示例代碼

網(wǎng)公網(wǎng)安備