第五节 列表

列表掌握知识点

  • 什么是列表
  • 列表的长度、最大索引
  • 列表的遍历
  • 列表的常见操作
  • 掌握列表的嵌套使用

1 概述

  1. 在Python中,列表是一种 有序的容器,用于存储一组任意类型的数据。
  2. 列表是可变的,意味着可以在列表中 添加、删除和修改元素,同时也可以对列表中的元素进行排序、搜索和迭代。
    • 注意规范: 不建议列表中存储多种类型元素, 不方便管理。

1.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 列表索引

  1. 使用索引获取元素 ,列表有序,有下标索引
    • 索引从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 列表遍历

  1. 为了能更有效的 访问列表 中的每个数据,我们可以使用 循环进行遍历
    • for 循环 和 while 循环.

2.1 for 遍历列表

  1. 如果是 可迭代的, 可以直接遍历 。

    # 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=" ")
    
  2. 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. 遍历列表还有其他的方式.
    • 列表名[ 索引 ]
    # 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 列表解析

  1. 列表解析是Python中的一种 简洁、明了地创建列表的方法,这种方式可以让我们用更简单、更易读的语法快速地生成数据结构,提高代码效率。

  2. 语法格式如下:

    • expression为每个元素要执行的操作,可以是任何有效的 Python 表达式。
    • item 是从可迭代对象中依次读取的每个元素。
    • iterable 是被迭代的对象。
    	new_list = [expression for item in iterable]
    
  3. 具体案例如下:

    • 具体使用的三种情况.
    '''
    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 列表添加

  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 列表删除

  1. 在列表中的删除有三种方法
    • 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 列表查询

  1. 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))
    
  2. 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"]))
    
  3. 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 列表的嵌套

  1. 嵌套:顾名思义、 在列表中嵌套列表。
  2. 通常使用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() 排序函数

  1. 想要对列表的排序,前提是 列表中的数据类型,要保持一致

    • sort() 升序排序,默认参数 reverse =False 如果为True就是反转.
  2. 升序 和 降序.

    # 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() 反转排序

  1. 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]
    
  2. 也可以使用切片的方式。

    • 列表名[::-1]
    	print(list_1[::-1]) #反转
    

4.3 max(list)和min(list)最大和最小

  1. 使用内置函数找出列表最大和最小元素

    • 语法格式 max(列表名)
    # 1.注意: 列表中的元素要保持一致.
    list = [3, 2, 5, 7, 1]
    	print(max(list))# 7
    	print(min(list)) # 1
    

4.4 列表切片

  1. 同字符串一样,使用方式一样,列表也可以使用切片操作。
    • 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

  1. 判断元素是否在列表中.
    • 可以 结合 分支结构 使用。
    # 使用 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: 随机分班

  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: 判断字符结尾

  1. 有一个列表,判断列表中的每一个元素是否 以p或a 结尾,

    • 如果是,则将其放入一个新的列表中,最后输出这个新的列表.
  2. 练习提示:

    • 如何判断列表中的元素以什么字符结尾?
    • 如何找到列表中的每一个元素?
    • 列表中的元素为字符串,所以可以使用下标[-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: 按要求编写代码

  1. 根据下列要求操作列表:
    • 创建一个空列表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)
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴琼老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值