列表
如果同时处理多个数据,可以考虑列表
1.认识列表(list)
(1) 列表是容器型数据类型(序列);将[]作为容器的标志,里面多个数据用逗号隔开:
[数据一,数据二,数据三…]
(2) a. 列表是可变的(可变指的是列表中元素的个数和元素的值可变 — 列表支持增删改查)
b. 列表是有序的(元素有顺序对应的位置的信息:元素的顺序影响结果 — 列表支持索引操作)
(3)列表对元素没有要求:任何类型的数据都可以作为列表的元素
注:元素——容器中每一个独立的数据,就是这个容器的元素
空列表:
list1 = []
列表是有序的:
print([10,20,30]) != [30,20,10]
列表元素可以是任何类型的数据:(列表中的元素也可以是列表)
list2 = ['小明',10,Ture,None]
2.列表的“查”功能:获取列表中的值
(1)查单个 —— 获取一个元素
- 语法:
列表[索引]
-
说明 —— 获取列表中指定索引对应元素
列表 —— 获取元素的列表对象(可以是保存一个列表的变量,也可以是具体的列数据)
[] —— 固定写法
索引 —— 又叫下标;指的是元素在列表的位置信息
列表一旦确定,列表中的每个元素对应的索引就确定
a.元素从前往后从0开始不读那增加
b.元素从后往前-1开始不断减少
num = [10,20 30,40]
print(num[1]) ##两个输出的都是10
print(num[-4])
(2)切片 —— 同时获取多个元素(列表切片的结果是列表)
1.完整语法:
列表[开始下标:结束下标:步长]
a.说明:
列表 —— 获取元素列表
[] —— 固定写法
(开始下标,结束下标,步长 —— 必须是整数)
开始下标 —— 决定从哪里开始取 (能取到)
结束下标 —— 决定取到哪里结束(取不到)
步长 —— 决定取得时候怎么取(是一个一个取,还是跳着取;是从前往后取,还是从后往前取)
b. 确定切片结果:
第一步:先确定结果是否为空,看开始下标对应的位置到结束下标对应的位置及方向和步长的方向是否一致,一致结果不为空,不一致结果一定为空
第二步:如果结果不为空,再确定切片的有效范围,开始下标对应的元素能取到,结束下标对应的元素取不到。
第三步:在有效范围内,按步长的反向和绝对值获取元素(步长为正,从开始下标到结束下标从前向后取;步长为负就从后向前取。绝对值为1,就一个一个取;绝对值为2,取一个跳一个再去一个…)
c. 怎么写切片代码获取指定元素:(获取的元素间有规律)
- 确定开始下标:需要的结果中第一个数据列表的下标
- 确定结束下标:结束下标是结果中最后一项的后一个数据或者前一个数据(看方向)
- 确定步长:正负看趋势(从后向前取还是从前向后取);再看绝对值(是一个个取还是跳着取)
movies = ['肖生克的救赎', '霸王别姬', '阿甘正传', '钢铁侠', '蜘蛛侠', '蝙蝠侠', '蚁人', '雷神', '复仇者联盟']
print(movies[1:-1:1]) #['霸王别姬', '阿甘正传', '钢铁侠', '蜘蛛侠', '蝙蝠侠', '蚁人', '雷神']
print(movies[-1:1:-2]) # [复仇之联盟,蚁人,蜘蛛侠,阿甘正传]
print(movies[-2:5:2]) #[]
2.切片的省略写法:
-
省略步长: —— 相当于步长为1
列表[开始下标:结束下标]
-
省略开始下标: —— 获取元素时从头开始取,步长为正从第一个元素开始,步长为负,从最后一个元素开始取
列表[:结束下标:步长] ###不能省略冒号
movies = ['肖生克的救赎', '霸王别姬', '阿甘正传', '钢铁侠', '蜘蛛侠', '蝙蝠侠', '蚁人', '雷神', '复仇者联盟'] print(movies[:-2:2]) ###'肖生克的救赎', '阿甘正传', '蜘蛛侠', '蚁人' print(movies[:2:-2]) ##复仇者联盟,蚁人,蜘蛛侠 print(movies[:4]) ###'肖生克的救赎', '霸王别姬', '阿甘正传', '钢铁侠'
-
省略结束下标: —— 获取元素时,从开始下标开始,取完为止(有可能取到最后一个,也可能取到第一个&#