python二維列表(list)初始化


python二維列表(list)初始化

一、總結

一句話總結:

可以用c = [[0]*4 for _ in range(3)]的方式來初始化3行4列的二維數組,用乘號(*)重復不可變數據類型(這里是int 0),用循環重復可變數據類型(這里是列表)

 

 

二、python:二維列表(list)初始化

轉自或參考:python:二維列表(list)初始化
https://blog.csdn.net/weixin_43216017/article/details/89683873

       當我們使用python做數據的時候,經常會遇到需要初始化一個二維列表,然后對列表的每一個子項目(我們這里假設也是列表)進行操作。

       在初始化的時候有一個坑,在做題目的時候卡住好久,根本找不到解決的方法。后來才發現是二維列表初始化的問題。

       首先,如果我們需要初始化一個一維列表的時候

In [1]:a = [0] * 5
In [2]:a
Out[2]: [0, 0, 0, 0, 0]

       二維列表的初始化可以這樣做:

In [3]:b = [[0] * 5] * 5
In [4]:b
Out[4]: 
[[0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0]]

不過這樣有一個很大的問題:這樣操作的意思實際上是對於[0] * 5的一維列表復制了5次。也就是說,當我更改其中的任意一個的時候,其實是對b列表中的5個子列表全部修改了。

In [5]:b[0][0]='這個方法不行'
In [6]:b
Out[6]: 
[['這個方法不行', 0, 0, 0, 0],
 ['這個方法不行', 0, 0, 0, 0],
 ['這個方法不行', 0, 0, 0, 0],
 ['這個方法不行', 0, 0, 0, 0],
 ['這個方法不行', 0, 0, 0, 0]]

       為了解決這個問題,推薦采用以下方法

In [7]:c = [[0] * 5 for _ in range(5)]
In [8]:c[0][0]='這個方法行'
In [9]:c
Out[9]: 
[['這個方法行', 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0]]
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM