我一直相信
——24.1.27
一、数据容器的定义
1.Python中的数据容器:
一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素,每一个元素,可以是任意类型的数据,如字符串、数字、布尔等
2.数据容器的分类
数据容器根据特点的不同,如:
是否支持重复元素
是否可以修改
是否有序,等
分为五类,分别是:
列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
它们各有特点,但都满足可以容纳多个元素的特性
二、数据容器-列表
1.列表的定义
字面量:[元素1,元素2,元素3,……]
定义变量:变量名称 = [元素1,元素2,元素3,……]
定义空列表:变量名称 = [ ] 变量名称 = list()
列表内的每一个数据,称之为元素
以[ ]作为标识
列表内每一个元素之间用“,”隔开
注意:列表可以一次性存储多个数据,且可以为不同的数据类型,支持嵌套
案例演示
future_list = ["一切都会好的","万事胜意","我一直相信"]
print(future_list)
print(type(future_list))
嵌套演示
future_list1 = [["mqz","lyc","wp","lcl"],[100,85,90,75],1,1,4]
print(future_list1)
2.总结
1.列表的定义语法:
[元素1,元素2,元素3,……]
2.什么是元素:
数据容器内的每一份数据,都称之为元素
3.元素的类型有限制吗:
元素的数据类型没有任何限制,甚至元素也可以是列表,这样就定义了嵌套列表
3.列表的下标(索引)
如何从列表中取出特定位置的数据呢?
我们可以使用:下标索引
列表中的每一个元素,都有其位置下标索引,从前向后的方向,从0开始、依次递增,我们只需要按照下标索引,即可取得对应位置的元素
或者,可以反向索引,也就是从右向左,从后向前,从-1开始,依次递减(-1、-2、-3、……)
future_list = ["一切都会好的","万事胜意","我一直相信"]
print(future_list[1])
print(future_list[0])
print(future_list[2])
print(future_list[0])
print(future_list[1])
print(future_list[2])
print(future_list[-3])
print(future_list[-2])
print(future_list[-1])
如果列表是嵌套的列表,同样支持下标索引
future_list1 = [["mqz","lyc","wp","lcl"],[100,85,90,75],1,1,4]
print(future_list1[0][3])
print(future_list1[0][1])
注意:通过下标索引取数据,一定不要超出范围
4.总结
1.列表的下标索引是什么:
列表的每一个元素,都有编号称之为下标索引
从前向后的方向,编号从0开始递增
从后向前的方向,编号从-1开始递减
2.如何通过下标索引取出对应位置的元素呢?
列表[下标],即可取出
3.下标索引的注意事项:
需注意下标索引的取值范围,超出范围无法取出元素,并且会报错
三、列表的常用操作(方法)和特点
1.函数和方法
函数是一个封装的代码单元,可以提供特定功能
Python中,如果将函数定义为class(类)的成员,那么函数会称之为:方法
函数:
def add(x,y):
return x+y
方法:
class Student:
def add(self,x,y):
return x+y
方法和函数的功能一样,有传入参数,有返回值,只是方法的使用格式不同
函数的使用:num = add(1,2),可以直接通过函数名,传入参数调用
方法的使用:student = Student(),先获得方法所在的这个叫做class类对象
num = student.add(1,2),再通过class类对象.将方法点出来
2.列表的查询功能(方法)
1.查找某元素的下标
查找某元素的下标
功能:查找指定元素在列表的下标,如果找不到,报错ValueError
语法:列表.index(元素)
index就是列表对象(变量)内置的方法(函数)
例:
future_list = ["一切都会好的","万事胜意","我一直相信"]
print(future_list.index("一切都会好的"))
index = future_list.index("一切都会好的")
print(index)
2.统计列表内,有多少个元素
语法:len(列表)
可以得到一个int数字,表示列表内的元素数量
my_list1 = [1,1,1,1,1,1,9,7,6,4,3]
count = my_list1.count(1)
print(f"列表中1的个数有:{count}个")
count = len(my_list1)
print(f"列表中元素个数有{count}个")
3.列表的修改功能(方法)
1.修改特定位置(索引)的元素值:
语法:列表[下标] = 值
可以使用如上语法,直接对指定下标(正向、反向下标均可)的值进行:重新赋值(修改)
future_list = ["一切都会好的","万事胜意","我一直相信"]
future_list[2] = "我一直相信,一切都会好的"
print(future_list[2])
2.插入元素:
语法:列表.insert(下标,元素),在指定的下标位置,插入指定的元素
future_list = ["一切都会好的","万事胜意","我一直相信"]
future_list.insert(2,"苦难是花开的伏笔")
print(future_list)
3.追加元素方式1:
语法:列表.append(元素),将指定元素,追加到列表的尾部
future_list = ["一切都会好的","万事胜意","我一直相信"]
future_list.append("苦难是花开的伏笔")
print(future_list)
4.追加元素方式2:
语法:列表.extend(其他数据容器),将其他数据容器的内容取出,依次追加到列表尾部
future_list = ["一切都会好的","万事胜意","我一直相信"]
future_list.append("苦难是花开的伏笔")
print(future_list)
future_list1 = [["mqz","lyc","wp","lcl"],[100,85,90,75],1,1,4]
future_list.extend(future_list1)
print(future_list)
5.删除元素
语法1:del 列表[下标]
语法2:列表.pop(下标)
del只能删除元素,而pop不仅能将元素删除还能将删除的元素作为返回值得到
future_list = ["一切都会好的","万事胜意","我一直相信"]
future_list.append("苦难是花开的伏笔")
print(future_list)
del future_list[1]
print(future_list)
future_list.pop(1)
print(future_list)
6.列表的修改功能(方法)
删除某元素在列表中的第一个匹配项
语法:列表.remove(元素)
my_list = [1,2,3,2,3]
my_list.remove(2)
print(my_list)
future_list = ["一切都会好的","万事胜意","我一直相信"]
future_list.append("苦难是花开的伏笔")
print(future_list)
future_list.remove("苦难是花开的伏笔")
print(future_list)
7.清空列表内容
语法:列表.clear()
my_list = [1,2,3,2,3]
my_list.clear()
print(my_list)
8.统计某元素在列表内的数量
语法:列表.count(元素)
my_list1 = [1,1,1,1,1,1,9,7,6,4,3]
count = my_list1.count(1)
print(f"列表中1的个数有:{count}个")
,
4.总结
四、列表的特点
①可以容纳多个元素(上限为2**63-1、9223372036854775807个)
②可以容纳不同类型的元素(混装)
③数据是有序存储的(有下标符号)
④允许重复数据存在
⑤可以修改(增加或删除元素等)
五、练习案例:常用功能练习
有一个列表,内容是:[21,25,21,23,22,20],记录的是一批学生的年龄
请通过列表的功能(方法),对其进行:
1.定义这个列表,并用变量接受它
2.追加一个数字31,到列表的尾部
3.追加一个新列表[29,33,30],到列表的尾部
4.取出第一个元素
5.取出最后一个元素
6.查找元素31,在列表中的下标位置
ExampleList = [21,25,21,23,22,20]
ExampleList.append(31)
ExampleList2 = [29,33,30]
ExampleList.extend(ExampleList2)
print(ExampleList[0])
print(ExampleList[len(ExampleList)-1])
print(ExampleList[-1])
print(ExampleList.index(31))
六、列表的遍历
什么是遍历?
将容器内的元素依次取出进行处理的行为,称之为:遍历、迭代
如何遍历列表的元素?
可以使用while或for循环
如何在循环中取出列表的元素?
使用列表[下标]的方式取出
循环条件如何控制?
定义一个变量表示下标,从0开始
循环条件为 下标值 < 列表的元素数量
1.列表的遍历——while循环
def list_while_func():
#while循环遍历列表
my_list = ['一切都会好的','未来可期','苦难是花开的伏笔']
# 循环控制变量通过下标索引来控制,默认0
# 每一次循环将下标索引变量+1
# 循环条件:下标索引变量 < 列表的元素数量
i = 0
while i < len(my_list):
print(my_list[i])
i += 1
list_while_func()
2.列表的遍历——for循环
def list_for_func():
my_list2 = [1,1,4,8,5,7,2,3,6]
for element in my_list2:
print(element,end=' ')
list_for_func()
3.while循环和for循环的对比
while循环和for循环,都是循环语句,但是细节不同:
在循环控制上:
while循环可以自定义循环条件,并自行控制
for循环不可以自定义循环条件,只可以一个个从容器内取出数据就
在无限循环上:
while循环可以通过条件控制做到无限循环
for循环理论上不可以,因为被遍历的容器容量不是无限的
在使用场景上:
while循环适用于任何想要循环的场景
for循环适用于,遍历数据容器的场景或简单的固定次数循环场景
for循环更简单,while更灵活
for用于从容器内依次取出元素并处理,while用以任何需要循环的场景
4.练习案例:取出列表内的偶数
定义一个列表,内容是:[1,2,3,4,5,6,7,8,9,10]
遍历列表,取出列表内的偶数,并存入一个新的列表对象中
使用while循环和for循环各操作一次
提示:
通过if判断来确认偶数
通过列表的append方法,来增加元素
arr = [1,2,3,4,5,6,7,8,9,10]
i=0
arr2 = []
for i in arr:
if i % 2 == 0:
arr2.append(i)
print(arr)
print(arr2)