二维列表是将其他列表当做列表的元素放在一个列表当中,也就是列表的嵌套。在Python中数组存在于第三方库中,因此在不安装第三方插件的前提下想要在Python中使用数组方法,就要采用二维列表这个方法。
extend()命令
extend()命令可以把一个列表中的所有元素拼接在另一 个列表的后面。
格式
列表1.extend(列表2)
将列表2中的元素 拼接在列表1后面。
py
代码语言:javascript复制name1 = ['xiaowangzi', 'is']
name2 = ['kevin']
name2.extend(name2)
for i in name1:
print(i)
运行结果:
xiaowangzi is kevin
向有序列表插入数字
输入一个数字(10-90之间),把这个数字插入到num列表中, 并保持num中元素从小到大的排列顺序。
num = [19, 26, 91]
解题思路
可以把插入数字和列表中的元素,从左到右进行比较,来确定插入的位置。如果插入数字大于前一个元素并且小于后一个元素,就把数字插入到两个元素中间。
py
代码语言:javascript复制num = [19, 26, 91]
a = int(input())
if num[0] < a and a < num[1]:
num.insert(1, a)
elif num[1] < a and a < num[2]:
num.insrt(2,a)
print(num)
两个判断语句只有数字不一样,并且数字的变化是有规律的:下面的判断语句总比上面的判断语句对应位置的数字大1。
可以使用for循环简化代码:
py
代码语言:javascript复制num = [19, 26, 91]
a = int(input())
for i in range(2):
if num[i] < a and a < num[i 1]:
num.insert(i 1, a)
break
print(num)
二维列表
列表元素可以是任何数据类型,除了字符串、数字,列表的元素也可以是一个列表。
data = [‘xiaowangzi’, ‘is’, [‘kevin’, ‘wang’], ‘yeah’]
data[2] --> ['kevin', 'wang']
data[2][0] --> ['kevin']
如果一个列表的所有元素都是列表,它就是二维列表。
对于一个二维列表,使用一个索引可以得到子列表,再使用一个索引,可以得到子列表中的元素。
py
代码语言:javascript复制列表名[i] ------------> 子列表
列表名[i][j] ---------> 子列表中的元素
| |
| |-----------> 子列表的索引
|--------------> 列表索引
二维列表的插入
向二维列表插入子列表: append()命令
列表.append(子列表)
py
代码语言:javascript复制info =[['a', 'b'], ['c', 'd']]
py
代码语言:javascript复制r = ['e', 'f']
将列表r插入到列表info中 info.append(r)
或 info.insert(2,r)
insert()命令可以向列表中插入元素。 其中,第1个参数表示要插入的索引位置,第2个参数表示插入的元素。
py
代码语言:javascript复制info =[['a', 'b'], ['c', 'd'],['e', 'f']]
二维列表的修改
如果是对二维列表的某一个子列表整体进行修改,可以 使用列表名[索引]的方式,获得需要修改的子列表。
py
代码语言:javascript复制info = [['锄','禾', '日', '当', '午'], ['汗','滴','禾','下','土'], ['米','饭','真','好','吃'],['粒','粒','皆','辛','苦']]
py
代码语言:javascript复制c = [['谁','知','盘','中','餐'],['汉','堡','真','好','吃'],['可','乐','没','营','养']]
代码实现: info[2] = c[0]
info中索引为2的子列表修改为c中索引为0的子列表
如果是对子列表中的某一个元素进行修改,在使用列表名[索引]得到子列表以后,还需要找到要修改的元素在子列表中的索引,也就是列表名[索引][索引]的方式,获得需要修改的元素。
将列表info的第2个子列表中的第4个元素’凉’, 修改为列表c的第3个元素’来’
py
代码语言:javascript复制info = [['空','山','新','雨','后'],['天','气','晚','凉','秋'],['明','月','松','间','照'],['清','泉','石','上','流']]
py
代码语言:javascript复制c = ['走','回','来']
代码实现:info[1][3] = c[2]
py
代码语言:javascript复制info = [['空','山','新','雨','后'],['天','气','晚','来','秋'],['明','月','松','间','照'],['清','泉','石','上','流']]
二维列表的遍历
使用for循环遍历二维列表,循环变量依次为列表中的 每一个元素,即每一个子列表。
py
代码语言:javascript复制info = [['异','口','同','声'],['五','光','十','色'],['一','帆','风','顺'],['笑','口','常','开']]
for i in info:
print(i)
运行结果
[‘异’,’口’,’同’,’声’] [‘五’,’光’,’十’,’色’] [‘一’,’帆’,’风’,’顺’] [‘笑’,’口’,’常’,’开’]
遍历子列表
对于一个二维列表,使用一个索引可以得到子列表。先利用索引得到一个子列表,再遍历这个子列表,就能得到这个子列表中的每个元素。
py
代码语言:javascript复制for i in 二维列表[索引]
| |----- 一个子列表
|------------- 子列表中的元素
py
代码语言:javascript复制poetry = [
['空','山','新','雨','后'],
['天','气','晚','来','秋'],
['明','月','松','间','照'],
['清','泉','石','上','流']]
for x in poetry[0]:
print(x)
for语句遍历poetry的第一个子列表,每次循环,循环变量x依次是子列表的一个元素。 输出结果:
空 山 新 雨 后
遍历二维列表
使用for循环嵌套可以遍历二维列表。用外循环遍历列表,可以得到每一个子列表,再用内循环遍历子列表,可以得到每一个数据。
适用情况:仅使用列表元素
py
代码语言:javascript复制 | ---------|----- 子列表
for i in 列表: |
for j in i:
| ....
| --------- 子列表的元素
py
代码语言:javascript复制a = [[1,2,3],[4,5,6]]
for i in a: //遍历列表,得到子列表
for j in i: //遍历子列表,得到子列表元素
print(j)
第一次循环: i = [1, 2, 3]
, 内循环遍历i,j依次是1、2、3
第二次循环: i = [4, 5, 6]
, 内循环遍历i,j依次是4、5、6
运行结果:
1 2 3 4 5 6
遍历方式
直接遍历列表,循环变量就是列表元素
py
代码语言:javascript复制for x in 列表:
...
适用情况: 仅使用列表元素
把循环变量作为索引,得到列表元素
py
代码语言:javascript复制for i in range(len(列表)):
...
列表名[i] ----> 列表元素
适用情况: 使用列表索引 / 有规律的数字
两种遍历二维列表的方式,都使用了for循环嵌套的结构: 外循环遍历二维列表,得到子列表;内循环遍历子列表,得到 每个具体元素。