Dotcpp  >  编程教程  >  Python核心语法  >  Python二维列表

Python二维列表

点击打开在线编译器,边学边练

二维列表是将其他列表当做列表的元素放在一个列表当中,也就是列表的嵌套。有接触过C或C++的可能了解数组这个概念,在Python中数组存在于第三方库中,因此在不安装第三方插件的前提下我们想要在Python中使用数组方法,就要采用二维列表这个方法。

实际上列表中的元素可以是任何数据类型,我们看个例子:

my_list = [[1,2,3,4,5],'dotcpp',{1,2,3,},('www','dotcpp','com')]
print(my_list)

输出结果为:

[[1, 2, 3, 4, 5], 'dotcpp', {1, 2, 3}, ('www', 'dotcpp', 'com')]

在这个列表中包含了列表,字符串,集合,元组。当一个列表中的元素全部为列表的时候,是我们最常用的二维列表,下面会介绍几种二维列表的创建方法及其访问方式。

1. 直接创建法

直接创建法就是定义了列表名字之后直接进行输入,我们来定义一个简单的小键盘,即1-9:

my_list = [[1,2,3],[4,5,6],[7,8,9]]
print(my_list)

输出为:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

我们在理解的时候可以这样理解:

索引012
0123
1456
2789

由图可以看,my_list[0]对应的就是[1,2,3],因此我们在访问1的时候,他对应的坐标就为(0,0),我们可以通过索引访问,即my_list[0][0],它的值对应的就是1,其他值访问的方式和它一样,像元素9对应的访问方式就为my_list[2][2]。

2. 循环创建法

使用循环也可以实现而为列表的创建,通常会采用for循环来实现,我们来创建一个6*6的二维列表,代码如下:

my_list = []#先创建一个主列表
for i in range(6):#循环遍历6次,依次为主列表的每个元素创建新的列表
    j = []#先创建新列表并添加入主列表中
    my_list.append(j)
    for m in range(1,7):
        j.append(m)#为子列表添加元素
print(my_list)#输出

输出为:

[[1, 2, 3, 4, 5, 6],
[1, 2, 3, 4, 5, 6], 
[1, 2, 3, 4, 5, 6], 
[1, 2, 3, 4, 5, 6], 
[1, 2, 3, 4, 5, 6], 
[1, 2, 3, 4, 5, 6]]

输出的实际结果应是在一行中,为了方便大家理解所以这样排列,大家也可以通过while循环尝试一下去创建一个二维列表。

3. 列表推导创建法

使用列表推导式也是可以创建二维列表的,上一节我们刚刚学习过列表推导式,因此我们可以直接使用这种方式来简化我们的代码。

我们再次创建一个六行六列的二维列表,它的代码就相对简洁很多,代码如下:

my_list = [[i for i in range(1,7)] for j in range(1,7)]
print(my_list)

输出为:

[[1, 2, 3, 4, 5, 6],
[1, 2, 3, 4, 5, 6], 
[1, 2, 3, 4, 5, 6], 
[1, 2, 3, 4, 5, 6], 
[1, 2, 3, 4, 5, 6], 
[1, 2, 3, 4, 5, 6]]

这种方式的不仅节省时间还优化了代码,等同于循环创建了6个列表并赋予了6个值,最后他们是放在了一个列表中构成了二维列表。

4. 例题

再通过一个例子来进一步了解一下。

我们想要创建一个6*6的列表,然后里面的值从1-100中随机取值。代码如下:

import random #random属于系统库中的模块,可以随时调用,这里简单的了解一下
my_list = []#先创建列表
for i in range(6):#循环创建6个列表并放入my_list中
    j = []
    my_list.append(j)
    for k in range(6):
        c = random.randint(1,100)#调用了random中的一个生成随机数的方法,把生成的随意数的值赋给c
        j.append(c)#把c的值加入到列表j中
print(my_list)

输出为:

[[52, 83, 15, 35, 54, 60],
 [17, 61, 77, 99, 60, 50], 
 [88, 81, 9, 61, 76, 95], 
 [21, 52, 20, 49, 10, 61], 
 [94, 81, 48, 27, 80, 9], 
 [1, 94, 57, 66, 95, 97]]

这道题的思路和上面第二种方法是一致的,如果对列表推导式掌握的不熟练的同学可以在初期使用这种方式,它对比于前面的例子增添了一个随机取值功能。

5. 总结

关于二维列表,这一点对于要参加竞赛的同学很重要,不管是之后遇到迷宫问题还是2n皇后问题,都离不开二维列表的使用,因此在这里先简单的介绍一下,大家在可以初步了解,在后续竞赛题中会有关于这两种类型题的讲解,当然也能更进一步的去了二维列表。



本文固定URL:https://www.dotcpp.com/course/244

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Python教程
第一章 Python入门
第二章 Python基础语法
第三章 Python入门语法
第四章 Python核心语法
第五章 Python函数
第六章 Python面向对象编程
第七章 Python模块
第八章 Python异常处理和程序调试
第九章 Python文件及目录操作
第十章 PythonGUI编程
第十一章 Python进程和线程
第十二章 Python数据库管理
第十三章 Python算法
第十四章 Python爬虫
第十五章 Python实战项目
第十六章 后记
Dotcpp在线编译      (登录可减少运行等待时间)