日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python中list*n生成多維數組與for循環生成多維數組的區別說明_python

作者:shangyj17 ? 更新時間: 2022-07-07 編程語言

list*n生成多維數組與for循環生成多維數組的區別

本文主要介紹生成二維數組的方法,同時解釋使用list * n 方式所存在的問題。

1.從一個問題說起

先看一段代碼:

list0 = [1,2,3]
list1 = [list0] * 3
print('list1 is :',list1)
list1[0][0] = 999
print('new list1 is :',list1)

結果:

程序希望通過list * n 方式的方式生成一個初始的二維數組,并對其中部分值進行修改,從而產生我們希望得到的數組。

但是,當我們修改[0][0]位置的數值后,發現[1][0],[2][0]位置的數字也變成了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])

如何動態生成多維數組

多維數組其實就是多個一維數組的嵌套,Python中有原生的list,類似一個動態數組。

所以動態生成多維數組的思想就是在list中動態嵌套添加list。

下面代碼生成一個一個3×3×2的三維數組

# coding:utf-8
# 使用Python3中的print函數
from __future__ import print_function
arr = []
# 基本思想是在list中動態添加list,每個list可以嵌套,這樣就可以形成多維數組了
# arr中保存的而是row的集合,row中保存的是col的集合
# 這是一個3×3×2的三維數組
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])

運行結果:

運行結果

原文鏈接:https://blog.csdn.net/qq_17753903/article/details/82927136

欄目分類
最近更新