day 6
列表
1. 容器型数据类型(序列)
-
变量从是否是容器分为:非容器型数据类型的变量和容器型的数据变量
非容器型数据类型的变量 :一个盒子里面只有一个格子,所以同一时间只能保存一个数据。
例如:int、float、bool、None
-
容器型数据类型的变量 :
一个盒子里面有多个格子,每个格子可以存储不一样的数据,所以同一时间就可以保存多个数据
例如:list、dict、tuple、set、str等
2.什么是列表(类型:list)
-
列表是容器型数据类型:将[]作为容器标志,里面多个元素用逗号隔开
[元素1,元素2,元素3,…] -
列表是可变的(可变指的是元素的个数、值、和顺序可变 - 支持增删改);
列表有序(支持下标操作);
列表中的元素:任何类型的数据都可以作为列表的元素。(没有要求) -
元素 - 指的是容器中每一个独立的数据
空列表
list = [] print(list)
list2 是一个列表,列表中只有一个元素
list2 = [10] print(list2) list3 = [10, 19, 34] print(list3)
同一个列表中的元素可以是不同类型的数据
list4 = [10, 23.4, True, 'abc', [100,200]] print(list4)
获取列表元素
1.获取单个元素
语法:
列表[下标] : 获取指定下标对应的元素
说明:
列表: 任何结果是列表的表达式,例如:保存列表的变量或具体的列表数据
[] : 固定写法
下标 :下标(又叫索引)是有序序列中元素的位置信息。Python中有序序列中元素的下标有两种:
第一种:从前往后,从0开始一次增加
第二种:从后往前,从-1开始一次减少注意:下标不能越界
list = [10, 20, 30, 40] [10,20,30,40][] list [] print(list[0]) print(list[2]) print(list[-1]) #print(list[5]) # 报错:IndexError: list index out of range练习:定义一个列表,用两种下标值,获取每个元素
list1 = [10, 20, 30, 40, 50] print(list[0]) print(list[1]) print(list[2]) print(list[3]) print('=====================') print(list[-1]) print(list[-2]) print(list[-3]) print(list[-4])
2.切片(获取部分元素)
语法1:
列表[开始下标:结束下标:步长]
1)确定是否可以获取数据:从开始下标到结束下标的方向如果和步长对应的方向(不长为正表示从前往后,不长为负表示从后往前)
一致就可以获取数据,否则结果就是空列表。
2)确定有效范围:开始下标对应的元素可以取到,结束下标对应的元素取不到
-> [N:M] ->从N开始取到M-1的数据
3)确定切片结果:在有效范围内按照步长的绝对值取数据;结对值为1就一个一个取
绝对值为2就跳一个取一个
开始下标到结束下标的方向如果和步长对应的方向一致,就可获取到数据
heroes = ['李白', '李信', '张飞', '关羽', '刘备', '安其拉', '瑶', '孙斌'] print(heroes[0:2:1]) print(heroes[0: -1:1]) print(heroes[-1:2:-1])开始下标到结束下标的方向如果和步长对应的方向不一致,一定取不到数据
print(heroes[1:4:-1]) print(heroes[5:1:2]) print('=====================') print(heroes[1:5:1]) print(heroes[-1:3:-1])练习:写出以下表达式的打印结果:
heroes = ['李白', '李信', '张飞', '关羽', '刘备', '安其拉', '瑶', '孙斌'] print(heroes[0:5:2]) # ['李白','张飞','刘备'] print(heroes[1:-2:-1]) # [] print(heroes[2:-2:2]) # ['张飞','刘备'] print(heroes[-2:0:-3]) # ['瑶','关羽'] print(heroes[-1:-4:1]) # [] print(heroes[0:6:3]) # ['李白','关羽']练习2:写切片获取指定内容
heroes = ['李白', '李信', '张飞', '关羽', '刘备', '安其拉', '瑶', '孙斌'] ['张飞', '关羽', '刘备'] ['李白', '李信', '张飞', '关羽'] ['瑶', '安琪拉', '刘备'] ['李信', '关羽', '安琪拉'] ['孙膑', '安琪拉'] ['李信', '瑶'] print(heroes[2:5:1]) print(heroes[0:4:1]) print(heroes[-2:3:-1]) print(heroes[1:-2:2]) print(heroes[-1:4:-2]) print(heroes[1: -1:5])
语法2:省略步长
列表[开始下标:结束下标] – 步长为1print('==========一==============') heroes = ['李白', '李信', '张飞', '关羽', '刘备', '安其拉', '瑶', '孙斌'] print(heroes[1:3]) print(heroes[1:-1]) print(heroes[3:0])
语法3:省略开始下标
列表[:结束下标:步长]/列表[:结束下标]
如果步长为正,从第一个元素开始往后取;如果步长为负,从最后一个元素开始往前取print('==========二=============') print(heroes[:5]) print(heroes[:-2:2]) print(heroes[:5:-1])
语法4:省略结束下标
列表[开始下标::步长]/列表[开始下标:]
如果步长为正,从开始下标从前往后取完为止;如果步长为负,从开始下标开始从后往前取取完列表[::步长] – 全部取,方向由步长决定
print('=========三=============') print(heroes[3:]) print(heroes[3::2]) print(heroes[4::-1])
练习:推算以下表达式的打印结果
heroes = ['李白', '李信', '张飞', '关羽', '刘备', '安琪拉', '瑶', '孙膑'] print(heroes[2:5]) # ['张飞', '关羽', '刘备'] print(heroes[3::-2]) # ['关羽', '李信'] print(heroes[-3::-1]) # ['安其拉','刘备','关羽','张飞','李信','李白'] print(heroes[:-4:2]) # ['李白', '张飞'] print(heroes[1::3]) # ['李信','刘备','孙斌'] print(heroes[:-2]) # ['李白', '李信', '张飞', '关羽', '刘备', '安琪拉']
3.遍历 - 一个一个的全部取出来
方法一: 直接获取元素
for 变量 in 列表:
循环体变量依次获取的就是列表中的每个元素
方法二: 通过获取每个元素的下标来获取元素
for 变量 in range(列表长度):
循环体变量依次获取的是列表中元素的下标
补充:len(列表) - 获取列表长度
nums = [10, 20, 30, 40, 50, 60]
for i in nums:
print('i:', i)
for x in range(len(nums)):
print(x,nums[x])
for x in range(-1,-len(nums)-1,-1):
print(x,nums[x])
for x in range(len(nums)-1,-1,-1):
print(x)
练习:scores保存所有学生的分数
1)统计不及格学生人数
2)计算学生平均分scores = [90, 78, 54, 67, 88, 30, 59] sum = 0 count = 0 for x in range(len(scores)): if scores[x] < 60: count += 1 sum += scores[x] print('不及格人数:',count) print('平均分:',sum / len(scores))
练习2:已知列表nums,统计nums中整数的个数
nums = [90, 1.23, 'abc', 12, 0.12] count = 0 for i in nums: if type(i) == int: count += 1 print('整数个数:',count)
列表的增删改
1.增 - 添加元素
1) 追加
列表.append(元素) - 将元素添加到列表的最后
print('==========append实例===============')
list1 = [10, 20]
print(list1)
list1.append(100)
print(list1)
scores = [90, 78, 65, 45, 55, 89, 30, 99]
new_score = []
for i in scores:
if i < 60:
new_score.append(i)
print(new_score)
2) insert -插入
列表.insert(下标,元素) – 将元素插入到指定下标前
print('=========insert实例================')
nums = [10, 20, 30, 40]
print(nums)
nums.insert(1, 100)
print(nums)
练习:已知一个列表,列表中的元素已经从小到大排好序,插入输入的数据,要求插入后不影响顺序
nums = [12, 23, 56, 78, 99, 120] 80 -> [12, 23, 56, 78, 80, 99, 120] 2 -> [2, 12, 23, 56, 78, 99, 120] num=float(input('请输入一个成绩:')) for i in range(len(nums)): if nums[i] > num: nums.insert(i,num) break else: nums.append(num) print(nums)
2.删 - 删除元素
1)del 列表[下标] – 删除指定下标对应的元素
print('=========del 列表[下标]================')
TVS = ['海贼王', '火影忍者', '名侦探柯南', '七龙珠', '秦时明月', '灵笼']
print(TVS)
del TVS[2]
print(TVS)
2) 列表.remove(元素) – 删除指定元素
如果元素不存在会报错;如果有重复的,只删除最前面的那个
print('=========列表.remove(元素)================')
TVS = ['海贼王', '火影忍者', '名侦探柯南', '七龙珠', '秦时明月', '灵笼']
print(TVS)
TVS.remove('七龙珠')
print(TVS)
TVS = ['海贼王', '火影忍者', '名侦探柯南', '七龙珠', '秦时明月', '灵笼', '火影忍者']
TVS.remove('火影忍者')
print(TVS)
3)
列表.pop() - 取出最后一个元素
列表.pop(下标) - 取出指定下标对应的元素
print('==============pop====================')
TVS = ['海贼王', '火影忍者', '名侦探柯南', '七龙珠', '秦时明月', '灵笼', '火影忍者']
TVS.pop()
result = TVS.pop()
print(TVS, result)
TVS.pop(2)
result = TVS.pop()
print(TVS, result)
3.改
列表[下标]=值 – 将列表中指定下标对应的元素改成指定的值
print('=========改 - 修改人数================')
TVS = ['海贼王', '火影忍者', '名侦探柯南', '七龙珠', '秦时明月']
TVS[2] = '灵笼'
print(TVS)
练习:将score中所有不及格的分数改成0分
score = [90,34,89,55,88,33,78] for i in range(len(score)): if score[i] < 60: score[i] = '0' print(score)
in 操作
1. in
元素 in 列表 – 判断列表中是否存在指定的元素
存在是Ture ,不存在是Flase
2.not in
元素 not in 列表 --判断列表中是否不存在指定元素
不存在是Ture, 存在是Flase
print(10 in [10,20,30])
print([10,20] in [10,20,30])
print([10,20] in [[10,20],30])
本文详细介绍了Python中列表(list)的数据类型特性,包括列表的定义、可变性、元素操作(单个元素和切片)、遍历方法以及增删改的基本操作。通过实例演示了如何创建、操作和维护列表,适合初学者理解列表的基础使用。
1万+

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



