python中l(wèi)ist*n生成多維數(shù)組與for循環(huán)生成多維數(shù)組的區(qū)別說明
list*n生成多維數(shù)組與for循環(huán)生成多維數(shù)組的區(qū)別
本文主要介紹生成二維數(shù)組的方法,同時(shí)解釋使用list * n 方式所存在的問題。
1.從一個(gè)問題說起
先看一段代碼:
list0 = [1,2,3]
list1 = [list0] * 3
print('list1 is :',list1)
list1[0][0] = 999
print('new list1 is :',list1)結(jié)果:

程序希望通過list * n 方式的方式生成一個(gè)初始的二維數(shù)組,并對(duì)其中部分值進(jìn)行修改,從而產(chǎn)生我們希望得到的數(shù)組。
但是,當(dāng)我們修改[0][0]位置的數(shù)值后,發(fā)現(xiàn)[1][0],[2][0]位置的數(shù)字也變成了999
原因是,當(dāng)我們使用list * n 方式的時(shí)候,采用的是淺拷貝,list1[0],list1[1],list1[2]其實(shí)都是list0的淺拷貝。
當(dāng)我們?cè)谏厦娉绦蛑校尤胂铝写a:
print('list0 is ',list0)
print(list0 is list1[0])
print(list1[0] is list1[1])
list0的值也隨之改動(dòng)了,并且,通過程序判定,list0,list1[0],list[1]其實(shí)都是一個(gè)列表。
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])
如何動(dòng)態(tài)生成多維數(shù)組
多維數(shù)組其實(shí)就是多個(gè)一維數(shù)組的嵌套,Python中有原生的list,類似一個(gè)動(dòng)態(tài)數(shù)組。
所以動(dòng)態(tài)生成多維數(shù)組的思想就是在list中動(dòng)態(tài)嵌套添加list。
下面代碼生成一個(gè)一個(gè)3×3×2的三維數(shù)組
# coding:utf-8
# 使用Python3中的print函數(shù)
from __future__ import print_function
arr = []
# 基本思想是在list中動(dòng)態(tài)添加list,每個(gè)list可以嵌套,這樣就可以形成多維數(shù)組了
# arr中保存的而是row的集合,row中保存的是col的集合
# 這是一個(gè)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é)果:

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
pandas 轉(zhuǎn)換成行列表進(jìn)行讀取與Nan處理的方法
今天小編就為大家分享一篇pandas 轉(zhuǎn)換成行列表進(jìn)行讀取與Nan處理的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python實(shí)現(xiàn)動(dòng)態(tài)添加屬性和方法操作示例
這篇文章主要介紹了Python實(shí)現(xiàn)動(dòng)態(tài)添加屬性和方法操作,結(jié)合實(shí)例形式分析了Python類中屬性與方法的動(dòng)態(tài)添加、綁定、刪除等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
python實(shí)現(xiàn)鄰接表轉(zhuǎn)鄰接矩陣
這篇文章主要介紹了python實(shí)現(xiàn)鄰接表轉(zhuǎn)鄰接矩陣,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
Pytorch的mean和std調(diào)查實(shí)例
今天小編就為大家分享一篇Pytorch的mean和std調(diào)查實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python中XlsxWriter模塊簡(jiǎn)介與用法分析
這篇文章主要介紹了Python中XlsxWriter模塊用法,簡(jiǎn)單描述了XlsxWriter模塊的功能并結(jié)合實(shí)例形式分析了Python使用XlsxWriter模塊操作xls文件的數(shù)據(jù)插入、直方圖等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04
python實(shí)現(xiàn)按任意鍵繼續(xù)執(zhí)行程序
本文給大家分享的是如何使用Python腳本實(shí)現(xiàn)按任意鍵繼續(xù)執(zhí)行程序的代碼,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下2016-12-12
python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(四):域名系統(tǒng)
當(dāng)我們?cè)谏暇W(wǎng)的時(shí)候,通常輸入的是網(wǎng)址,其實(shí)這就是一個(gè)域名,而我們計(jì)算機(jī)網(wǎng)絡(luò)上的計(jì)算機(jī)彼此之間只能用IP地址才能相互識(shí)別2014-06-06

