python中l(wèi)ist*n生成多維數(shù)組與for循環(huán)生成多維數(shù)組的區(qū)別說明
list*n生成多維數(shù)組與for循環(huán)生成多維數(shù)組的區(qū)別
本文主要介紹生成二維數(shù)組的方法,同時解釋使用list * n 方式所存在的問題。
1.從一個問題說起
先看一段代碼:
list0 = [1,2,3] list1 = [list0] * 3 print('list1 is :',list1) list1[0][0] = 999 print('new list1 is :',list1)
結(jié)果:
程序希望通過list * n 方式的方式生成一個初始的二維數(shù)組,并對其中部分值進(jìn)行修改,從而產(chǎn)生我們希望得到的數(shù)組。
但是,當(dāng)我們修改[0][0]位置的數(shù)值后,發(fā)現(xiàn)[1][0],[2][0]位置的數(shù)字也變成了999
原因是,當(dāng)我們使用list * n 方式的時候,采用的是淺拷貝,list1[0],list1[1],list1[2]其實(shí)都是list0的淺拷貝。
當(dāng)我們在上面程序中,加入下列代碼:
print('list0 is ',list0) print(list0 is list1[0]) print(list1[0] is list1[1])
list0的值也隨之改動了,并且,通過程序判定,list0,list1[0],list[1]其實(shí)都是一個列表。
2.正確的方式
list0 = [(i + 1) for i in range(3)] list2 = [[(i + 1) for i in range(3)] for _ in range(3) ] print('list2 is :',list2) list2[0][0] = 999 print('new list2 is :',list2) print('list0 is ',list0) print(list0 is list2[0]) print(list2[0] is list2[1])
如何動態(tài)生成多維數(shù)組
多維數(shù)組其實(shí)就是多個一維數(shù)組的嵌套,Python中有原生的list,類似一個動態(tài)數(shù)組。
所以動態(tài)生成多維數(shù)組的思想就是在list中動態(tài)嵌套添加list。
下面代碼生成一個一個3×3×2的三維數(shù)組
# coding:utf-8 # 使用Python3中的print函數(shù) from __future__ import print_function arr = [] # 基本思想是在list中動態(tài)添加list,每個list可以嵌套,這樣就可以形成多維數(shù)組了 # arr中保存的而是row的集合,row中保存的是col的集合 # 這是一個3×3×2的三維數(shù)組 for i in range(3): row = [] for j in range(3): col = [] col.append(i + j) col.append(i * j) row.append(col) arr.append(row) print(arr) print("Output Result:") for i in range(3): for j in range(3): for k in range(2): print('[', end='') print(i, end=', ') print(j, end=', ') print(k, end='] = ') print(arr[i][j][k])
運(yùn)行結(jié)果:
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python3中的最大整數(shù)和最大浮點(diǎn)數(shù)實(shí)例
今天小編就為大家分享一篇Python3中的最大整數(shù)和最大浮點(diǎn)數(shù)實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07淺談Python中chr、unichr、ord字符函數(shù)之間的對比
chr、unichr、ord在Python中都可以被用作字符類型轉(zhuǎn)換,這里我們就來淺談Python中chr、unichr、ord字符函數(shù)之間的對比,需要的朋友可以參考下2016-06-06Python使用watchfiles實(shí)現(xiàn)監(jiān)控目錄變更
在工作中難免會碰到這樣的需求,監(jiān)控指定目錄,下面小編就來和大家介紹一下如何利用watchfiles 模塊實(shí)現(xiàn)監(jiān)控目錄的變更,感興趣的可以了解下2023-09-09在Pycharm的Project Files下建立多個項目的操作
這篇文章主要介紹了在Pycharm的Project Files下建立多個項目的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05- 這篇文章主要介紹了如何在 Python 中導(dǎo)入文本文件,在Python中導(dǎo)入文本文件是很常見的操作,我們可以使用內(nèi)置的open函數(shù)和with語句來讀取或?qū)懭胛谋疚募枰呐笥芽梢詤⒖枷?/div> 2023-05-05
最新評論