最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在python中使用[[v]*n]*n遇到的坑及解決

 更新時(shí)間:2022年05月13日 09:04:52   作者:范翻番樊  
這篇文章主要介紹了在python中使用[[v]*n]*n遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

使用[[v]*n]*n遇到的坑

今天通過(guò)[[v]*n]*n快速創(chuàng)建列表, 當(dāng)我使用索引修改值時(shí), 本來(lái)是打算修改a[0][0]這一個(gè)元素的第一個(gè)值, 但是打印結(jié)果卻將三個(gè)元素第一值都修改了,所以就記錄一下!

遇到的問(wèn)題

>> data = [[0] *3] *3
>> data
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>> data[0][0] = 1
>> data
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]

通過(guò)一番研究

>> id(data[0])
836879108296
>> id(data[1])
836879108296
>> id(data[2]) ?# 可以發(fā)現(xiàn),三個(gè)元素使用的是同一個(gè)內(nèi)存地址編號(hào)
836879108296
# 推薦使用這種方法或者使用列表推導(dǎo)式
>> data2 = [[1,2,3],[4,5,6],[7,8,9]]
>> id(data2[0])
836879107208
>> id(data2[1])
836879108552
>> id(data2[2])
836879109960
# 使用列表推導(dǎo)式
>> data3 = [[1,2] for i in range(10)]
>> data3[0][0] = 100
[[100, 2], ?# 只是修改了第一個(gè)元素的第一個(gè)值
?[1, 2],
?...
?[1, 2]]
# 查看內(nèi)存地址
>> id(data3[0])
836879107528
>> id(data3[1])
836848339912

使用[[v]*n]*m遇到的問(wèn)題

需求:想通過(guò)python生成m行n列的矩陣

方式1:(有問(wèn)題)

data = [[0]*3]*4 ? #4行3列
data

輸出

[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

修改data[0][0]元素的值

data[0][0] = 1
data

輸出

[[1, 0, 0], [1, 0, 0], [1, 0, 0], [1, 0, 0]]

哇,是不是對(duì)結(jié)果很迷,為啥改變一個(gè)值會(huì)對(duì)列為0的所有元素改變呢?

解析:我們可以看下他們對(duì)應(yīng)的內(nèi)存指向地址

在這里插入圖片描述

問(wèn)題出在這里了。

方式2:

#輸入
data1 = [[0 for i in range(3)] for j in range(4)]
data1
 
# 輸出
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
  
#輸入
data1[0][0] = 1
data1
 
#輸出
[[1, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

凯里市| 大丰市| 林西县| 微山县| 边坝县| 海城市| 陕西省| 西城区| 太白县| 前郭尔| 丹凤县| 习水县| 绥阳县| 寿光市| 庆阳市| 腾冲县| 黎川县| 漠河县| 株洲县| 鄂伦春自治旗| 金湖县| 香港| 肃南| 砀山县| 洮南市| 增城市| 深泽县| 诸暨市| 吉木乃县| 玉林市| 九寨沟县| 孙吴县| 成都市| 那坡县| 观塘区| 木兰县| 鄂州市| 溆浦县| 泗水县| 宝山区| 宁晋县|