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ù)組,并對其中部分值進行修改,從而產(chǎn)生我們希望得到的數(shù)組。
但是,當我們修改[0][0]位置的數(shù)值后,發(fā)現(xiàn)[1][0],[2][0]位置的數(shù)字也變成了999
原因是,當我們使用list * n 方式的時候,采用的是淺拷貝,list1[0],list1[1],list1[2]其實都是list0的淺拷貝。
當我們在上面程序中,加入下列代碼:
print('list0 is ',list0)
print(list0 is list1[0])
print(list1[0] is list1[1])
list0的值也隨之改動了,并且,通過程序判定,list0,list1[0],list[1]其實都是一個列表。
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ù)組的嵌套,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])運行結(jié)果:

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
pandas 轉(zhuǎn)換成行列表進行讀取與Nan處理的方法
今天小編就為大家分享一篇pandas 轉(zhuǎn)換成行列表進行讀取與Nan處理的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python實現(xiàn)動態(tài)添加屬性和方法操作示例
這篇文章主要介紹了Python實現(xiàn)動態(tài)添加屬性和方法操作,結(jié)合實例形式分析了Python類中屬性與方法的動態(tài)添加、綁定、刪除等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
python實現(xiàn)按任意鍵繼續(xù)執(zhí)行程序
本文給大家分享的是如何使用Python腳本實現(xiàn)按任意鍵繼續(xù)執(zhí)行程序的代碼,非常的簡單實用,有需要的小伙伴可以參考下2016-12-12
python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(四):域名系統(tǒng)
當我們在上網(wǎng)的時候,通常輸入的是網(wǎng)址,其實這就是一個域名,而我們計算機網(wǎng)絡(luò)上的計算機彼此之間只能用IP地址才能相互識別2014-06-06

