day6-循环和列表
一、循环
1、for循环
'''
1)语法:
for 变量 in 序列:
循环体
2)说明:
序列 - 任何容器数据类型的数据,例如:字符串、列表、字典、元组、集合、迭代器、生成器,range等
3)for循环循环次数由序列中元素的个数决定。
'''
2、while循环
'''
while循环的固定写法:
while True:
需要重复执行的操作
if 循环结束的条件
break
'''
# 案例
pw = '123'
while True:
a = input('请输入密码:')
if a == pw:
print('密码正确')
break
二、列表
1、认识列表
(1)系统类型,是容器型数据类型(同时保留多个数据):[数据1,数据2,…]
(2)列表是可变的(元素的个数和元素的值可变 - 支持增删改操作;列表是有序(支持索引操作)
# 列表有序
print([1,2,3] == [2,1,3]) #False
#列表无序
print({1,2,3} == {2,1,3}) #True
(3)列表的元素
list = [1,2.3,True,None,'A',[1,2]]
print(list) # 6
(4)空列表
list = []
print(list)
2、获取元素
(1)查单个元素 - 一次获取列表中的一个元素
- 语法:列表[索引] - 获取列表中指定索引对应的元素
- 说明:索引又叫下标,是指元素在有序序列中的位置信息
索引的确定方式:从前往后索引值从0开始不断加1;从后往前从-1不断减1
nums = [90, 91, 92, 93, 94, 95]
print(nums[1], nums[-5]) # 91 91
- 练习
# 练习:已知scores中保存的是一个班级所有学生的分数(分数已经按照从大小排好序)
scores = [99, 97, 95, 88, 80, 79, 73, 66, 62, 57, 40]
# 问题1:打印最高分
print(0)
# 问题2:打印最低分
print(-1)
# 问题3:打印中位数(如果scores中分数的个数是偶数个,中位数打印2个)
a = len(scores)
if a % 2 != 0:
a = a // 2
print(scores[a])
else:
a = a // 2
print(scores[a - 1], scores[a])
(2)切片
- 完整语法:列表[开始下标:结束下标:步长]
- 切片结果:
a. 从开始下标到结束下标的方向和步长对应的方向是否一致(步长为正表示从前往后取,步长为负表示从后往前取),如果不一致结果一定是空列表
b. 确定有效范围(开始下标对应的元素取得到,结束下标对应的元素取不到)
c. 按照步长的方向和绝对值获取元素
方向:为正再有效范围内从前往后取,为负在有效范围内从后往前取
names = ['猫', '狗', '兔', '松鼠', '鱼', '凤凰', '飞鸟']
print(names[1:4:2]) # 不为空
print(names[-1:2:3]) # []
print(names[2:-3:1]) # 不为空
print(names[2:-3:-1]) # []
print(names[-1:1:-2]) # ['飞鸟', '鱼', '兔']
- 切片省略写法
a. 省略步长:列表[开始下标:结束下标] - 相当于步长为1
b. 省略开始下标:列表[:结束下标:步长] - 如果步长为正从第一个元素开始;为负从最后一个元素开始
c. 省略结束下标:列表[开始下标::步长] - 如果步长为正一直取到最后一个元素;为负一直取到第一个元素
names = ['猫', '狗', '兔', '松鼠', '鱼', '凤凰', '飞鸟']
# 省略步长
print(names[3:-2]) # == print(names[3:-2:1]) ['松鼠', '鱼']
# 省略开始下标
print(names[:-3:-1]) # ['飞鸟', '凤凰']
print(names[:5]) # ['猫', '狗', '兔', '松鼠', '鱼']
# 省略结束下标
print(names[3::-1]) # ['松鼠', '兔', '狗', '猫']
(3)遍历 - 一个一个的获取列表中所有的元素
- 方法1:直接获取元素
'''
语法:
for 变量 in 列表:
循环体
'''
# 案例:统计列表中不及格的人数
scores = [30, 60, 40, 70, 80, 90]
count = 0
for i in scores:
if i < 60:
count += 1
print(count) # 2
- 方法2:先获取每个元素的下标,然后再根据下标再获取元素
'''
for 变量 in range(len(列表)):
循环体(变量是元素对应的下标)
'''
# 案例:
names = ['猫', '狗', '兔', '松鼠', '鱼', '凤凰', '飞鸟']
for i in range(len(names)):
print(i, names[i])