在FY-Python2301
项目下创建一个名为day06
的文件夹,在day06
下创建一个名为01-列表
的代码文件。
容器型数据类型
列表(下标、切片、for循环、列表的一系列方法:append、insert、clear、del、pop、remove、reverse、sort、sorted、extend、max、min、sum、count、index等)
1、什么是列表?
1)回顾:需要有很多数据保存,前边保存数据使用的是变量
2)假设保存30个学生的数学成绩?如果成绩都是用变量保存的,太不现实了!!这个时候就需要有容器,列表便是容器数据类型中的一个!!!
列表就是用来更方便的保存数据的score = [50, 60, 66, 20, 40, 70, 80, 100]
students = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
2、列表的性质
a、列表是一个有序的容器数据类型
(有序代表列表中每个元素有自己的固定位置:下标
)
b、列表是一个可变的容器数据类型
(可变代表列表中元素可以被修改:增、删、改
)
c、列表使用[ ],列表中元素之间使用,逗号隔开(英文状态下)
d、列表的数据类型:list
e、列表中可以存放任意类型的数据
3、创建一个空列表
list1 = []
print(list1, type(list1))
打印结果
4.下标和切片
下标:每个元素都有自己的位置
从左向右:正向下标,从0开始递增
从右向左:负向下标,从-1开始递减
正向下标:0 1 2 3 4
负向下标:-5 -4 -3 -2 -1通过下标获取元素:语法 --> 容器[下标]
list2 = [100, 200, 300, 400, 500]
print(list2[2], list2[-3])
打印结果
注意:下标不要越界
print(list2[100]) #list index out of range
打印结果
通过下标引申出更高级的知识点:切片
切片:
能够从原容器中获得新的子容器(从原容器中获取N个元素组成新的容器)
容器[start:stop:step]
start:开始参数,默认为0,可以省略不写
stop:结束参数(必须赋值的一个参数);当要获取最后一个元素时,可以不写
step: 步长,决定下一个被获取元素的下标,默认为1,可以省略不写
切片也是一个左闭右开区间,下一个被获取元素的下标 = 当前被获取元素的下标 + step
当step>=1时,start代表的元素必须在stop代表的元素左侧
当step<=-1时,start代表的元素必须在stop代表的元素的右侧
games = ['lol', '王者荣耀', 'PUBG', 'DNF', 'QQ飞车']
# 正向下标
print(games[1:5:1])
print(games[1:5])
print('-----------------------华丽分割线-------------------------')
print(games[1:6], games[1:])
print(games[0:3], games[:3])
print(games[:2])
print('----------------华丽分割线-------------------')
print(games[:])
print(games[::2])
# 负向下标
print(games[::-1], games[-1::-1])
print(games[::-2])
print(games[1:-2])
打印结果
在day06
下创建一个名为02-练习
的代码文件,我们下期和day07的练习一起来讲
在FY-Python2301
项目下创建一个名为day07
的文件夹,在day07
下创建一个名为01-列表
的代码文件。
一、列表的遍历(列表中的循环)
1、直接遍历
list1 = ['阿甘正传', '海王', '阿凡达', '霸王别姬', '憨豆特工', '红海行动']
for i in list1:
print(i)
2.间接遍历
len():能够查看容器中元素个数(返回容器的长度)(代表容器长度)
list1 = ['阿甘正传', '海王', '阿凡达', '霸王别姬', '憨豆特工', '红海行动']
print(len(list1))
for j in range(len(list1)):
print(f'下标{j} --> 元素{list1[j]}')
二、列表的拼接(合并)
和重复
list1 = ['阿甘正传', '海王', '阿凡达', '霸王别姬', '憨豆特工', '红海行动']
list2 = ['战狼']
print(list1 + list2) # 拼接
print(list2 * 5) # 重复
列表性质补充:列表中可以出现重复元素(有些列表不可以出现重复元素)
三、列表是可变的(增、删、改)
games = [] # 创建一个空列表
print(games)
1、增加元素 : append():向列表中添加元素
games = []
games.append('王者荣耀')
games.append('和平精英')
print(games)
insert : 向列表中插入元素(向指定位置添加元素)
games.insert(1, '天天酷跑')
print(games)
2、修改 : 容器[下标] = 新的值
games[1] = '欢乐斗地主'
print(games)
3、删除 : del:根据指定下标删除元素
del games[-1]
print(games)
remove() : 删除指定元素
games.remove('王者荣耀')
print(games)
pop:根据下标删除元素,使用pop删除的元素还能被找回
content = games.pop(0)
print(content, games)
clear() : 直接清空列表
list3 = ['阿甘正传', '海王', '阿凡达', '霸王别姬', '憨豆特工', '红海行动']
list3.clear()
print(list3)
打印结果就是空列表
为什么说增删改说明列表是可变的?
以上列表的增删改操作都是建立在games这个列表自身基础上的
删除操作:del,remove,clear等于电脑中直接删除文件
pop等于将文件删除时放入回收站,还可以再次回复
在day07
下创建一个名为02-练习
的代码文件。我们下期和day06的练习一起来讲
在day07
下创建一个名为03-列表相关方法
的代码文件。
1、index :
可以从列表中查找指定元素的下标,找到元素直接停止查找
--> 结果为4
list1 = [1, 2, 3, 4, 5, 6, 7, 5]
result = list1.index(5)
print(result)
还可以指定开始查找的位置(从下标为6的位置开始查找5)
--> 结果为7
result1 = list1.index(5, 6)
print(result1)
如果index找不到元素,报错
list1.index(100) # 100 is not in list
2、sort :
将列表从小到大排序,sort方法修改的是列表本身
-->结果为[1, 2, 3, 4, 5, 5, 6, 7]
list1 = [1, 2, 3, 4, 5, 6, 7, 5]
list1.sort()
print(list1)
添加参数reverse=True,就可以从大到小排序
--> 结果为[7, 6, 5, 5, 4, 3, 2, 1]
list1 = [1, 2, 3, 4, 5, 6, 7, 5]
list1.sort(reverse=True)
print(list1)
3、sorted :
将列表从小到大排序,sorted方法不会修改列表本身
--> 结果分别为
[0, 1, 2, 4] [2, 4, 1, 0]
[4, 2, 1, 0] [2, 4, 1, 0]
list2 = [2, 4, 1, 0]
print(sorted(list2), list2)
list2 = [2, 4, 1, 0]
print(sorted(list2, reverse=True), list2)
4、reverse :
能够将列表倒序,reverse修改的是列表本身。
--> 结果分别为[5, 4, 3, 2, 1]
list4 = [1, 2, 3, 4, 5]
list4.reverse()
print(list4)
5、extend :
能够将容器中的元素全部添加到列表中
--> 结果分别为:
[[5, 4, 3, 2, 1]]
[[5, 4, 3, 2, 1], 5, 4, 3, 2, 1]
[[5, 4, 3, 2, 1], 5, 4, 3, 2, 1, 0, 2, 4, 6, 8]
list4 = [1, 2, 3, 4, 5]
list5 = []
list5.append(list4)
print(list5)
list5.extend(list4)
print(list5)
list5.extend(range(0, 9, 2))
print(list5)
6、count :
计数,统计列表中某个元素的出现次数
--> 结果为2
print(list5.count(2))
7、sum:
针对于数字列表求和(列表中都是数字的列表)
问:list4能不能被称为数字列表? 答:不能。[[5, 4, 3, 2, 1], 5, 4, 3, 2, 1, 0, 2, 4, 6, 8]
--> 结果为6
list6 = [1, 2, 3]
print(sum(list6))
8、max、min :
查看列表中的最大值、最小值
--> 结果f分别为为3、1
print(max(list6), min(list6))