目录
1. 列表说明
列表可以包括整型、浮点型、字符型多种数据
[1,2,3,4,5]
[1, 2, 3, 4, 5]
[1.0,2,3,'ABC']
[1.0, 2, 3, 'ABC']
列表可以通过for结构循环读取
x = [1.0,2,3,'ABC']
for each in x:
print(each)
1.0
2
3
ABC
或者通过下标索引方法读取
x = [1,2,3,4,5,'上山打老虎']
x[0]
1
x[5]
'上山打老虎'
x[-1]
'上山打老虎'
x[-6]
1
2. 列表切片
列表可以如同序列一样进行切片操作,序列实现切片操作的语法格式如下:
sname[start : end : step]其中,各个参数的含义分别是:
- sname:表示序列的名称;
- start:表示切片的开始索引位置(包括该位置),此参数也可以不指定,会默认为 0,也就是从序列的开头进行切片;
- end:表示切片的结束索引位置(不包括该位置),如果不指定,则默认为序列的长度;
- step:表示在切片过程中,隔几个存储位置(包含当前位置)取一次元素,也就是说,如果 step 的值大于 1,则在进行切片去序列元素时,会“跳跃式”的取元素。如果省略设置 step 的值,则最后一个冒号就可以省略。
x = [1,2,3,4,5,'上山打老虎']
#从元素0到元素3之前(即元素3-1 == 元素2)
x[0:3]
[1, 2, 3]
#从元素3到元素5-1
x[3:5]
[4, 5]
#从元素到元素6-1
x[3:6]
[4, 5, '上山打老虎']
#元素3及之后所有数据
x[3:]
[4, 5, '上山打老虎']
#元素3-1及之前所有数据
x[:3]
[1, 2, 3]
#列表所有数据
x[:]
[1, 2, 3, 4, 5, '上山打老虎']
#从元素0开始,每个间隔2到元素6-1
x[0:6:2]
[1, 3, 5]
#全部列表元素,每个间隔3
x[::3]
[1, 4]
#全部列表元素,从后每个间隔1
x[::-1]
['上山打老虎', 5, 4, 3, 2, 1]
3. 列表嵌套
二维列表如下述两种方法描述,都是等价的
matrix = [[1,2,3],
[2,3,4],
[3,4,5]]
matrix
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]
matrix = [[1,2,3],[2,3,4],[3,4,5]]
matrix
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]
可以通过二层for循环读取每个整数如下:
>>> for i in matrix:
... for j in i:
... print(j, end=' ')
...
1 2 3 2 3 4 3 4 5 1 2 3 2 3 4 3 4 5
通过二层下标也可以读取每个元素
matrix[0][0]
1
matrix[2][0]
3
4. 二维列表的同一性问题
说明:is 运算符,用于同一性检验
应用示例,看似一样的二维列表A和B赋值如下:
#赋值二维列表A
A = [0] * 3
A
[0, 0, 0]
for i in range(3):
... A[i] = [0] * 3
...
A
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
#赋值二维列表B
B = [[0] * 3] * 3
B
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
但是做修改操作时,发生问题如下:
#修改A的一个元素,只有单个元素修改
A[1][1] = 1
A
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]
#修改B的一个元素,所有二级列表都发生了变动
B[1][1] = 1
B
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]
通过is检查同一性如下:
A[0] is A[1]
False
B[0] is B[1]
True
A和B的生成原理如下图:


本文详细介绍了Python列表的基础知识,包括列表的多样性、使用for循环和下标读取元素,列表切片的语法及示例,列表的嵌套以及二维列表的同一性问题。通过实例探讨了is运算符在检验列表同一性中的应用。

被折叠的 条评论
为什么被折叠?



