文章目录
列表掌握知识点
- 什么是列表
- 列表的长度、最大索引
- 列表的遍历
- 列表的常见操作
- 掌握列表的嵌套使用
1 概述
- 在Python中,列表是一种 有序的容器,用于存储一组任意类型的数据。
- 列表是可变的,意味着可以在列表中 添加、删除和修改元素,同时也可以对列表中的元素进行排序、搜索和迭代。
- 注意规范: 不建议列表中存储多种类型元素, 不方便管理。
1.1 语法定义
-
假设存储1000个学生,这就需要定义1000个变量,那该怎么办?
- 所以, 列表出现可以解决上述问题. 创建列表的方式如下:
- 列表中的元素需要使用,逗号分隔。
- 列表中可以 存储任意类型 数据。
#1语法格式 [] 中括号 #1.1 里面可以存储不同的元素 list_1 =[] list_2 =["字符串",10,3.14,True] print(list_1) # [] 空列表 print(type(list_2)) #查看类型 <class 'list'>
1.2 列表索引
- 使用索引获取元素 ,列表有序,有下标索引。
- 索引从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)
2 列表遍历
- 为了能更有效的 访问列表 中的每个数据,我们可以使用 循环进行遍历。
for 循环 和 while 循环.
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()是包左不包右的. range(0,len(list_1)) [0,最大索引) for j in range(len(list_1)): #前面的0可以省略 print(list_1[j])
2.2 while 遍历列表
- 遍历列表还有其他的方式.
- 列表名[ 索引 ]
# 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
2.3 列表解析
-
列表解析是Python中的一种 简洁、明了地创建列表的方法,这种方式可以让我们用更简单、更易读的语法快速地生成数据结构,提高代码效率。
-
语法格式如下:
- expression为每个元素要执行的操作,可以是任何有效的 Python 表达式。
- item 是从可迭代对象中依次读取的每个元素。
iterable
是被迭代的对象。
new_list = [expression for item in iterable]
-
具体案例如下:
- 具体使用的三种情况.
''' python中的列表解析 ''' #第一种使用情况,生成列表 list = [i for i in range(10)] print(list) #第二种情况,进行表达式运算 list_1= [i*2 for i in range(10)] print(list_1) #第三种情况, 带if 条件进行运算 list_2 =[i for i in range(10) if i%2==0] print(list_2)
3 列表的常见操作
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") list_1.append("dd") print(list_1) #2.指定下标添加元素 insert(索引,元素) list_1.insert(3,"ff") #该位置元素后移. print(list_1) #3.使用extend 方法向列表添加元素,相当于遍历后插入列表中. list_1.extend("hello") #3.1通过这个特性可以使用extend("h")单个添加,也可以同append() print(list_1) #['aa', 'bb', 'cc', 'ff', 'dd', 'ee', 'h', 'e', 'l', 'l', 'o'] #3.2 也可以将列表遍历后插入,这样插入了 mm 和 nn list_1.extend(["mm","nn"]) print(list_1)
- 通过
3.2 列表删除
- 在列表中的删除有三种方法
- del 列表名[下标] 删除,可以 根据切片删除[start:end]
- 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下的元素进行删除. del list[1:3] #可以根据切片删除 #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)
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"]] # 2. count(),统计出现的次数,有就返回出现次数,没有就返回0 print(list_1.count("aa")) # 查找元素也可以是, 列表 print(list_1.conut(["ff","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.')
3.4 列表的嵌套
- 嵌套:顾名思义、 在列表中嵌套列表。
- 通常使用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")
4 列表中常用函数
4.1 sort() 排序函数
-
想要对列表的排序,前提是 列表中的数据类型,要保持一致 。
sort()
升序排序,默认参数 reverse =False
如果为True就是反转.
-
升序 和 降序.
# 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) # 相当于反转 print(list_1)
4.2 reverse() 反转排序
-
python中的内置方法,反向列表元素。
列表名.reverse()
反转,可以和跟sort()
方法配合使用。
# 1.注意: 列表中的元素要保持一致. list = [3, 2, 5, 7, 1] list.reverse() print(list)#[1, 7, 5, 2, 3] #2.和sort()结合使用,可以达到升序降序的效果 list.sort() #相当于升序 #2.1使用反转做降序 print(list)#[1, 2, 3, 5, 7] list.reverse() print(list)#[7, 5, 3, 2, 1]
-
也可以使用切片的方式。
列表名[::-1]
print(list_1[::-1]) #反转
4.3 max(list)和min(list)最大和最小
-
使用内置函数找出列表最大和最小元素
- 语法格式 max(列表名)
# 1.注意: 列表中的元素要保持一致. list = [3, 2, 5, 7, 1] print(max(list))# 7 print(min(list)) # 1
4.4 列表切片
- 同字符串一样,使用方式一样,列表也可以使用切片操作。
list[start : end :sep]
# 1.注意: 列表中的元素要保持一致. list = [3, 2, 5, 7, 1] #1.1 列表长度 #包左边,不包含右边, 从0开始 [0,3) print(list[:3])#[3,2,5] #从1开始到结束 print(list[1:])#[2, 5, 7, 1] #间隔为 2 print(list[::2]) #[3, 5, 1]
4.5 in 和 not in
- 判断元素是否在列表中.
- 可以 结合 分支结构 使用。
# 使用 in 或者 not in 同string 一样. list = ["蜘蛛侠","超人","小龙虾"] res = "蜘蛛侠" in list res_1 = "蜘蛛" not in list print(res) print(res_1) #结合if选择结构使用 if "大龙虾" not in list: list.append("大龙虾") print(list) else: print("元素存在",list)
5.案例练习
5.1 练习1: 随机分班
- 需求分析: 把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()# 作用换行.
5.2 练习2: 判断字符结尾
-
有一个列表,判断列表中的每一个元素是否 以
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)
5.3 练习3: 按要求编写代码
- 根据下列要求操作列表:
- 创建一个空列表num。
- 使用循环将数字1~100 添加到列表中。
- 循环遍历列表,删除列表中为奇数的数字。
- 打印整个列表。
#创建列表 num = [] #循环添加数据 for i in range(1,101): num.append(i) print(len(num)) #确定个数 for j in num: if j%2!=0: #删除具体的元素 num.remove(j) print(num)