python中二维列表(list)的初始化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中二维列表(list)的初始化相关的知识,希望对你有一定的参考价值。


当我们使用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]]


以上是关于python中二维列表(list)的初始化的主要内容,如果未能解决你的问题,请参考以下文章

二维list 不同长度列表 初始化 (Python)

如何在 Python 中初始化一个二维数组?

如何在python中创建二维列表

如何静态初始化二维列表?

python大神你好,请问二维列表参照一维列表排序的问题。

C++中二维列表数组的动态初始化