文章目录
- 列表掌握知识点
- 1.1 概述
- 1.1.1 语法格式
- 1.2 列表的循环遍历
- 1.2.1 for 循环遍历列表
- 1.2.2 while 循环遍历列表
- 1.3 列表的常见操作
- 1.3.1 列表增加元素
- 1.3.2 列表删除元素
- 1.3.3 列表查询元素
- 1.4 列表的排序
- 1.5 列表的嵌套
- 1.6 练习 随机分班
- 1.7 练习 判断字符结尾
- 1.8 扩展: 知识点快速查找
列表掌握知识点
- 什么是列表
- 列表的长度、最大索引
- 列表的遍历
- 列表的常见操作
- 掌握列表的嵌套使用
1.1 概述
- 在Python中,列表是一种 有序的容器,用于存储一组任意类型的数据。
- 列表是可变的,意味着可以在列表中 添加、删除和修改元素,同时也可以对列表中的元素进行排序、搜索和迭代。
- 但是不建议列表中存储多种类型元素, 不方便管理.
1.1.1 语法格式
-
假设存储1000个学生, 这就需要定义1000个变量. 那该怎么办?
- 所以, 列表出现可以解决上述问题. 创建列表的方式如下:
- 定义列表
使用 [] 需要用逗号进行隔离 ,元素与元素
#1语法格式 [] 中括号 #1.1 里面可以存储不同的元素 list_1 =[] list =["字符串",10,3.14,True] print(list_1) # [] 空列表 print(type(list)) #查看类型 <class 'list'>
-
使用索引获取元素
- 列表有序,有下标索引.
- 从0开始 . 最大索引, 列表长度-1.
- 修改,列表 中的值, 列表变量[ 索引 ]= 值
#2.列表有下标索引 #2.1 列表的长度 len(列表名), 最大索引是 len(列表名)-1,即 :长度-1 list_2 =["字符串",10,3.14,True] # IndexError: list index out of range #print(list_2[4]) #2.2 索引如果为4 就会报错. print(len(list_2)) #列表长度 print(list_2[3]) #最大索引就是 长度-1 #2.3 修改列表值 list_2[3] =False #修改为False print(list_2)
1.2 列表的循环遍历
- 为了能更有效的 访问列表 中的每个数据,我们可以使用循环进行遍历.
for 循环 和 while 循环.
1.2.1 for 循环遍历列表
-
如果是可迭代的, 可以直接遍历
# for循环遍历 # 1.如果是可以迭代的就直接遍历. for i in "hello": print(i) # 将每个字符输出 #2. 通过遍历进行输出 list_1 = ['aa', 'bbb', 'angelbaby', 'e'] for i in list_1: #print(i) #获取每一个字符的长度 print(len(i),end=" ")
-
for 循环的第二种写法.(不要求掌握,了解即可)
# range()是包左不包右的. range(0,len(list_1)) [0,最大索引) for j in range(len(list_1)): #前面的0可以省略 print(list_1[j])
1.2.2 while 循环遍历列表
- 遍历列表还有其他的方式.
- 列表名[ 索引 ]
- 列表最大索引 长度-1
# 1.可以通过列表名[索引] 的方式进行遍历. list_1 = ['aa', 'bbb', 'angelBaby', 'e'] print(list_1[0]) print(list_1[1]) print(list_1[2]) print(list_1[3]) # 列表的长度 print(f"列表的长度 : {len(list_1)}") # 2. 所以只要拿到 索引就能变量 print("*" * 20) i = 0 while i < len(list_1): print(list_1[i]) i += 1
1.3 列表的常见操作
1.3.1 列表增加元素
- 向列表中 添加元素方式有很多.
- 通过
append()
方法, 向列表中添加元素 - 通过
extend()
方法通过遍历插入列表. - 通过
insert(index,object)
方法在指定位置 index前插入元素 object.
# 创建列表 list_1 = ['aa', 'bb', 'cc', 'dd'] print(f"原列表数据 {list_1}") #1.往列表中添加元素 append list_1.append("ee") print(list_1) #2.指定下标添加元素 insert(索引,元素) list_1.insert(3,"ff") #该位置元素后移. print(list_1) #3.使用extend 方法向列表添加元素,相当于遍历后插入列表中. list_1.extend("hello") print(list_1) #['aa', 'bb', 'cc', 'ff', 'dd', 'ee', 'h', 'e', 'l', 'l', 'o'] #3.1 也可以将列表遍历后插入 list_1.extend(["mm","nn"]) print(list_1)
- 通过
1.3.2 列表删除元素
- 在列表中的删除有三种方法
- del 列表名[下标] 删除,可以 删除指定列表元素
- remove() , 可以删除指定的元素, 根据元素进行删除.
- pop() 方法删除, 根据索引 删除, 只能删除1 个
- 如果 不写索引 , 默认删除最后一个.
- 清空列表中的数据 clean()
#删除的几种方式 #1. 使用del进行删除 del 列表名[索引] #2. 使用pop进行删除 列表名.pop[索引] #3. 使用remove删除 列表名.remove[值] #4. 扩展使用 clean 清空 #新建列表 list_1 = ["a","b","c","d","e"] #1.1 进行删除操作 语法格式 del 列表名[索引] del list_1[2] #将索引2下的元素进行删除. #2.1 pop 语法格式删除 list_1.pop() #如果不传递参数,默认删除最后一个. e list_1.pop(1) #只能根据索引进行删除 #3.1 使用remove删除 语法格式 列表名.remove[value值] list_1.remove("d") #需要传入具体的值. #4. 清空所有 list_1.clear() #清空列表中所有元素 #打印输出 print(list_1)
1.3.3 列表查询元素
-
index()
方法用于查询列表中某个元素的索引.- 如果该元素存在于列表中,则返回该元素的第一个索引。
- 可以根据元素值进行查找, 或者根据 区间范围查找,
- 找到就返回第一个找到元素的下标 , 没有就异常
#1. 通过列表名称和索引的方式 #语法格式: 列表名[索引] print(list_1[1]) print(list_1[len(list_1)-1]) #最大索引 #2. 通过index方式, 找到了就返回下标,没有找到就报错! # 语法格式: index(value) # 语法格式: index(value,start, end) print(list_1.index("aa")) print(list_1.index("aa",3,7))
-
count()
方法用于计算列表中某个元素出现的次数,- 如果该元素不存在于列表中,则 返回 0。
# 1.1 创建列表 list_1 = ["aa", "bb", "cc", "aa", "ee", "ff", "aa"] # 3. count(),统计出现的次数,有就返回出现次数,没有就返回0 print(list_1.count("aa"))
-
in
或者not in
使用查询,- 判断是否存在, 存在就返回 True ,不存在返回False ,
- 一般和 if 结合使用
# 1.1 创建列表 list_1 = ["aa", "bb", "cc", "aa", "ee", "ff", "aa"] # 3.1 同in 或者 not in进行判断,有则True 或 False resault = "aa" in list_1 print(resault) # 没有就返回 False resault_1 ="aa" not in list_1 print(resault_1)
- 思考? 列表中也有"banana"为什么不执行?
#扩展结合if进行使用 , fruits = ["apple","orange","banana"] if 'apple' in fruits: print('I like apples!') #I like apples! elif 'banana' in fruits: print('Bananas are yummy too!') else: print('I prefer oranges.')
1.4 列表的排序
-
想要对列表的排序, 前提是列表中的内容要保持一致.
sort()
升序排序, 默认参数 reverse =False
如果为True就是反转.列表名.reverse()
相当于直接反转.
-
升序 和 降序.
# 1. 创建一个列表 list_1 = ["dd", "cc", "bb", "aa"] # 1.1 正常排序升序 sort() list_1.sort() # 排序升序,从小到大 print(list_1) # ['aa', 'bb', 'cc', 'dd'] print("-" * 30) #分割线 # 1.2 降序 sort(reverse = True) # 如果不写默认 reverse = Fasle list_1.sort(reverse=True) # 相当于反转 # # 1.2.1 属于结合版本 # list_1.sort() # list_1.reverse() print(list_1) #['dd', 'cc', 'bb', 'aa']
-
使用切片的方式.
列表名[::-1]
print(list_1[::-1])#反转
1.5 列表的嵌套
- 嵌套:顾名思义、 在列表中嵌套列表。
- 通常使用2种方式进行。
- 通过 索引获取。
- 通过 循环获取。
# 1.定义一个嵌套列表
my_list = [
[1, 2, 3], ["a", "b", "c"], [True, False, True]
]
# 1.1 第一种方式拿其中数据
print(my_list[0]) # 拿到第一个列表
print(my_list[1][2]) # 拿第二个列表中的第二个元素 c
# 1.2 第二种情通过 for循环
for i in my_list: #外循环循环次数
# 通过内循环拿到每个列表的具体元素.
for j in i:
print(j, end="\t")
1.6 练习 随机分班
- 需求分析: 把8个学生 ,随机分配到3个班级。
- 请用代码实现。
''' 1. 需求分析: 将8个同学,分别随机分配到 3 个班级中. 班级相当于 students =['a','b','c','d','e','f','g','h'] 将每个班级放入列表中,相当于三个班级 class = [ [],[],[] ] 2.重点如何使用循环,随机 random.randint(0,2) ''' import random # 1.创建学生 students = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] # 2.分为3个班 class_student = [ [], [], [] ] # 3. 如何将学生插入班级里 for i in students: """具体的往班级里面添加""" # class_student[0].append(i) # 往第一个加 # class_student[1].append(i) # 往第二个加 # class_student[2].append(i) # 往第三个加 #通过随机添加 num = random.randint(0,2) class_student[num].append(i) print(class_student) #遍历输出嵌套数组中的元素 for i in class_student: print(f"每个班有学生 :{i}") #内循环循环具体内容 for name in i: print(name,end=" \t") print()# 作用换行.
1.7 练习 判断字符结尾
-
有一个列表,判断列表中的每一个元素是否 以
p或a
结尾,- 如果是,则将其放入一个新的列表中,最后输出这个新的列表.
-
练习提示:
- 如何判断列表中的元素以什么字符结尾?
- 如何找到列表中的每一个元素?
- 列表中的元素为字符串,所以可以使用下标[-1] 来获取最后一个字符的值,然后判断.
# 根据题干得知, 相当于对列表中的元素进行比较 # 1.创建列表 list_1 = ["ak","ck","mp","oa","tt","ma"] #2.创建一个新列表 ,如果在list_1中判断出来就存放到该列表之中 new_list =[] #3. 使用循环遍历list_1 列表并进行判断 for i in list_1: #也可以使用字符串切片i[-1] #if i[-1]=='s' or i[-1]=='e': if i.endswith('p') or i.endswith('a'): new_list.append(i) #打印出新的列表 print(new_list)
1.8 扩展: 知识点快速查找
- 列表快速查找