前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python教程:二维列表(list)初始化

python教程:二维列表(list)初始化

原创
作者头像
Python学习者
发布2024-04-12 16:28:26
1440
发布2024-04-12 16:28:26
举报
文章被收录于专栏:Python学习者

当我们使用python做数据的时候,经常会遇到需要初始化一个二维列表,然后对列表的每一个子项目(我们这里假设也是列表)进行操作。

在初始化的时候有一个坑,在做题目的时候卡住好久,根本找不到解决的方法。后来才发现是二维列表初始化的问题。

首先,如果我们需要初始化一个一维列表的时候

代码语言:python
代码运行次数:0
复制
In [1]:a = [0] * 5
In [2]:a
Out[2]: [0, 0, 0, 0, 0]

二维列表的初始化可以这样做:

代码语言:python
代码运行次数: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个子列表全部修改了。

代码语言:python
代码运行次数:0
复制
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]]

为了解决这个问题,推荐采用以下方法:

代码语言:python
代码运行次数: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]]

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档