python教程:二维列表(list)初始化
【摘要】 当我们使用python做数据的时候,经常会遇到需要初始化一个二维列表,然后对列表的每一个子项目(我们这里假设也是列表)进行操作。在初始化的时候有一个坑,在做题目的时候卡住好久,根本找不到解决的方法。后来才发现是二维列表初始化的问题。首先,如果我们需要初始化一个一维列表的时候In [1]:a = [0] * 5In [2]:aOut[2]: [0, 0, 0, 0, 0]二维列表的初始化可以这...
当我们使用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]]
为了解决这个问题,推荐采用以下方法:
#Python学习交流群:711312441
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]]
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)