python 6 列表
1. 列表的作用
(1)无列表时:
想要保存多个数据,就只能定义多个变量,然后给每个变量赋值,这个过程不简便
举例说明:
-
定义变量,保存一个班所有学生的成绩
-
保存所有学生的数据,计算算平均分
-
求最高分
问题:
score1 = 56
score2= 9
score3 = 23
score4 = 36
score5 = 14
score6 = 90
#2算平均分
print((score1+score2+score3+score4+score5+score6)/6)
#3算最高分
max_score=score1
if score1>max_score:
max_score=score1
if score2>max_score:
max_score=score2
if score3>max_score:
max_score=score3
if score4>max_score:
max_score=score4
if score5>max_score:
max_score=score5
if score6>max_score:
max_score=score6
print(max_score)
(2)有列表时:
用列表解决上述问题:
score=[12,13,233,45,567,8,9,80,82]
print ('平均分',sum(scores)/len(score))
print(max(scores))
所以,列表在需要同时处理多个数据的时候用。
2. 认识列表
1)什么是列表
非容器型数据就是一次只能保存一个数据,容器型数据就是一次可以同时保存多个数据
- 列表是容器型数据类型,将[ ]作为容器型的标志,里面多个元素用多个元素用逗号隔开;[数据1,数据2,数据3,…]
2)列表的特点
-
列表是可变的(可变指的是容器中元素的个数和值可变) -------- 支持增删改的操作
-
列表是有序的----------顺序确定了位置,这个顺序就是下标(可进行下标操作)
print([12,90,34]=[90,12,34]) #False print({12,23,34}={23,34,12}) #True #列表是有序的,集合是无序的
3)列表里的元素类型
-
列表里的元素没有要求,任何类型的数据都可以作为列表的元素,同一个列表中的元素类型可以不一样,例如:在一个列表中的数据可以是字符串、布尔值、数字、列表、空值、文本、容器型数据。
list=['abdff',34,False,None,[20,34]]
4)空列表
- 空列表是列表里面一个元素都没有,
- 表示方式: list[]、或list[ ],都是表示空列表,里面没有任何元素,
- 容器的特点就是可以同时存储多个数据,主要是把数据如何从容器中取出来。
3.查操作
列表的核心就是列表的增删改查,最重要的是查。
1)查单个元素:即一次获取一个元素
-
语法: 列表[下标] ----获取指定下标对应的元素
-
语法说明:
1)列表:指需要获取元素的列表,可以是任何结果是列表的表达式,比如:列表保存的变量,具体的列表数据等。
nums = [100,98,34,56,80]2)[ ] : 固定写法,必须写成中括号。
3)下标:下标又叫索引,是元素列表中,元素在列表中的位置,而下标可以是从前往后数,也可以是从后往前数。所以,列表中的每个元素都有两个索引值。
从前往后数就是:0、1、2、3、4、5、···、N
从后往前数就是:-1,-2,-3,···,-N
scores=[90,23,67,94,36]scores列表中,元素23的下标,从前往后数就是1,从后往前数就是-4。
-
注意:下标不可以越界,它必须是有效范围内的下标,就可以取出来的值,(index:索引值)
#1举例 num=[10,23,89,54,29,60] print(num[6]) #这个程序会报错,会出现IndexError: list index out of range,即下标值超过了表的范围。 #2练习,从列表中取出元素 scores=[189,234,654,89,90,38] print(score[0],scores[-3],scores[3]) #结果显示 189 89 89
2)切片
-
指从列表中一次获取多个元素(切片的语法比较复杂)
-
必须会的是:(1)根据切片代码找出对应的运行结果,(2)会根据想要的列表中的数据写出切片代码。
-
切片的完整写法:
语法:列表[开始下标:结束下标:步长] ,根据下标和步长获取指定列表中的部分元素。
-
开始下标:从哪里开始;
-
结束下标:从哪里结束;
-
步长告诉两个信息:
第一个:取值的方向,步长为正,从前往后取数,步长为负,从后往前取数;
第二个:步长的绝对值,步长的绝对值是1,表示在有效范围内,一个一个的按顺序取,步长的绝对值是2,表示在有效范围内,取一个跳一个,步长的绝对值为3,表示有效范围内,取一个跳两个;依次类推。
#案例分析 num=[10,23,89,54,29,60] print(num[1:4:2]) #起始下标是1,结束下标是4,步长是2,从前往后取,取一个数跳一个。
-
(1)怎么确定切片结果
-
第一步:确定结果是否为空列表
-
判断方法:看从开始下标到结束下标的方向是否和步长的方向一致,如果一致那么取值结果不为空,如果不一致,那么结果一定为空。
(其他编程语言的下标都是从前往后开始标记位置,很少有从后往前)
当判断出结果取值结果不为空的情况下,确定有效范围。
-
-
第二步:确定有效范围
- 开始下标对应的一定会取到,结束下标对应的元素取不到。
-
第三步: 在有效范围内,按照步长的绝对值确定获取内容
-
案例展示
height=[1.87,1.67,1.88,1.77,1.6]
print(height[0:3:2])
#运行结果显示
[1.87, 1.88]
(2)怎么写切片
怎么写出切片代码,得到想要的数据
步骤如下;
-
第一步:确定开始下标;即想取得目标对应的第一个元素的下标。
-
第二步: 确定步长,看所取目标的元素在原列表的顺序是从前往后还是从后往前。从前往后+,从后往前- ,确定想取数据是相间隔几个元素,一个一个取,步长绝对值为1.间隔一个取,步长绝对值就是2,间隔两个取,步长绝对值就是3.
-
第三步:确定结束下标;保证需要获取的数据在有效范围内,开始下标对应的元素要取得到,结束下标的元素取不到。
-
案例展示
#想取这个列表中的1.87,1.77 height=[1.87,1.67,1.88,1.77,1.6] print(height[0:4:+3]) #运行结果显示 [1.87, 1.77]
(3)切片的省略写法
a.省略步长:相当于步长是1(步长与冒号都不写)
- 写法:列表[开始下标:结束下标]
height=[1.87,1.67,1.88,1.77,1.6]
print(height[1:3])
##运行结果显示
[1.67, 1.88]
b. 省略开始下标 : 表示从头开始,由步长的正负决定从哪个方向开始取值,步长为正,即从前往后开始,步长为负,即从后往前开始。
-
写法:列表[:结束下标:步长]
height=[1.87,1.67,1.88,1.77,1.6] print(height[:-4:-2]) #表示从后往前,取一个跳一个,一直取到1.67,不包括1.67 print(height[:3]) #省略起始下标,表示是从头开始,省略步长,说明是+1, ##运行结果 [1.6, 1.88] [1.87, 1.67, 1.88]
c.省略结束下标 :如果步长为正就从开始下标开始一直取到最后一个元素,如果补偿为负就从开始下标开始,一直取到第一个元素。
-
写法:列表[起始下标::步长] (一直取到两头的元素取完为止)
height=[1.87,1.67,1.88,1.77,1.6] print(height[1::+1]) #从下标为1,从前往后,一个一个取,一直取完为止 #运行结果显示 [1.67, 1.88, 1.77, 1.6]
3)遍历: 一个一个的获取列表中的所有元素
-
方法1;【通过变量获取列表中的所有元素】
for 变量 in 列表:
循环体 -
方法2:通过下标来遍历列表【先拿到下标后,再遍历】
for x in range(len(列表))
循环体重复获取到的是每个元素的下标,然后需要通过:列表[小标]再获取元素 -
方法3:同时获取下标和元素
for 变量1,变量2 in enumerate(列表):
print(变量1,变量2)
games = ['王者荣耀','lol','永劫无间','spex','2k','植物大战僵尸','开心消消乐']
for x in games:
print(x)
for index in range(len(games)): 0,1,2,3,4,5,6,7 #-1,-2,-3,-4,-5,-6,-7,-8
print(index,games[index]
for index ,item in enumerate(games)
print(index,item)
##练习1 计算nums中所有元素的和
nums =[12, 45, 8.34, 56, 23]
sum = 0
for x in nums:
sum += x
print(sum)
# 练习2:统计nums中所有偶数的个数
nums =[23, 88, 90, 88, 67, 55, 11]
count = 0
for x in nums:
if x % 2 == 0:
count += 1
print(count)
# 练习3: 统计list1中字符串的个数
list1 =[109, 23.4, True, 'abc', 'helo', 23, '12', False, None]
count = 0
for x in list1:
if type(x) == str:
count += 1
print(count)
4.增删改操作
1)增:添加元素
添加方法如下:
-
第一种:列表.append(元素) -----列表的最后添加指定元素
-
第二种: 列表.insert(下标,数据) ------在列表指定下标对应元素前插入指定数据.
-
案例展示
##1.第一种添加 nums = [10,20,30] print(nums) nums.append(100) print(nums) ##运行结果显示 # [10, 20, 30, 100] ##2.第二种添加 nums = [10,20,30] nums.insert(-1,100) print(nums) nums.insert(0,200) print(nums) ##运行结果显示 [10, 20, 100, 30] [200, 10, 20, 100, 30]-
实际应用
##将列表nums中的所有奇数放入一个新的列表 nums = [17,89,90,81,84,4,56] newnums=[ ] for x in nums: if x % 2 != 0: newnums.append(x) print(newnums) ##运行结果展示 [17, 89, 81]
-
2)删
删除方法如下
-
第一种:del 列表[下标] ---- 删除列表中指定下标对应的元素,如果不写对应下标元素,会删除整这个列表。
- 语法:del +空格+列表[下标]—即删除对应下标位置的数据
-
第二种:列表.remove(‘元素’) - 删除列表中指定元素(如果元素不存在会报错:)
- 列表.remove(‘元素’)
- 注意:直接删存在问题:
(1)列表里面会不存在这个问题
(2)如果需要删除的元素有多个,只会删除列表中第一个元素
-
第三种:列表.pop(下标) - 取出列表指定下标对应的元素
-
这三种删除语法的区别:第一种与第二种删掉元素,相当于是直接从内存删除,第三种,只是不存在列表中,从列表中拿出去
nums1 =[12, 45, 8.34, 56, 23] del nums1[1] print(nums1) nums2=[12, 45, 67,89, 56, 23] nums2.remove(89) print(nums2) nums3=[12, 45, 84, 56, 23] nums3.pop(2) x=nums3.pop(2) print(nums3,x) ##运行结果 [12, 8.34, 56, 23] [12, 45, 67, 56, 23] [12, 45, 23] 56
3)改:修改元素的值
-
语法:列表[下标]=新元素 — 修改列表中指定下标的元素为新的元素
-
案例
##将scores中所有不及格的分数全部修改成‘重修’ ##score = [89,23,79,99,45,60,78,59] for index,item in enumerate(score): if item < 60: score[index]='重修' print(score) ##运行结果显示 [89, '重修', 79, 99, '重修', 60, 78, '重修']
5.列表相关操作
1)数学运算符:
-
数学运算符:+、*
-
两个列表的加法运算:列表1+列表2 – 将两个列表中的元素一次合并成一个新的列表。
-
语法:列表1+列表2
list1=[12,23,45,67,89] list2=[34,564,32,12] list3=list1+list2 print(list3) ##运行结果显示 [12, 23, 45, 67, 89, 34, 564, 32, 12]
-
-
列表的乘法运算
-
方法:列表N或者N列表 - 列表中元素重复N遍产生一个新的列表
list=[1,2,3,6,8,9,0] list2=3*list list3=list*3 print(list2,list3) ##运行结果展示 [2, 6, 8, 9, 2, 6, 8, 9, 2, 6, 8, 9] [2, 6, 8, 9, 2, 6, 8, 9, 2, 6, 8, 9]
-
2)in操作
-
作用:用来判断列表中是否存在指定元素
-
语法:
-
元素 in 列表 -----判断列表中是否存在指定元素
-
元素 not in 列表 -----判断列表中是否不存在指定元素
-
注意:其结果为布尔值,True、False.
score=[10,23,56,89,90] print(10 in score) print(23 not in score) print([23] in score) print(92 not in score) ##运行结果 True False False True
-
本文介绍了Python列表的重要性和使用,包括列表的作用、认识列表(定义、特点、元素类型及空列表)、查找操作(单个元素获取、切片及遍历)、增删改操作(添加元素、删除和修改元素值)以及列表的其他操作(如数学运算符和in操作)。通过实例详细解释了列表切片的完整写法和不同情况下的应用。
2662

被折叠的 条评论
为什么被折叠?



