day6循环和列表

本文详细介绍了Python中的for循环结构,如何使用range()生成数列,以及列表的创建、元素获取和遍历方法。涵盖了for循环的执行过程,range函数的不同用法,并通过实例演示了如何利用这些知识进行列表操作,如计算平均分、索引与切片等。
摘要由CSDN通过智能技术生成
1.for循环
1.for循环
"""
1)变量:
for 变量 in 序列:
    循环体
    
2)说明:
for   -   关键字、固定写法
变量   -   变量名(已经定义过或者没有定义过的变量都可以)
in    -    关键字、固定写法
序列  -   任何容器型数据类型的数据,例如:字符串、列表、字典、元组、集合、迭代器、生成器、range等
:    -   固定写法
循环体  -  结构上,和for保持一个缩进的一条或者多条语句(至少一条);
          逻辑上,循环体就是需要重复执行的代码
          
3)执行过程
让变量依次去系列中取值,一个一个的取,取完为止,每取一个上值就执行依次循环体。
for循环循环次数:由序列中元素的个数决定。
"""

2.range函数
"""
range(N)     -  产生[0~N)的等差数列,差是1
range(M, N)  -  产生[M, N)的等差数列,差是1
range(M, N, step)  -  产生[M, N)的等差数列,差是step;
"""
# 练习:;利用range创建以下几个等差数列
# 1)0、1、2、3、4、5... 55
for x in range(56):
    print(x)
# 2)所有两位数对应的等差数列:10 ~ 99
for x in range(10, 100):
    print(x)
# 3)1、3、5、7、9
for x in range(1, 10, 2):
    print(x)
# 4)11、22、33、44
for x in range(11, 45, 11):
    print(x)
# 5)9、8、7、6、5、4、3、2、1、0
for x in range(9, -1, -1):
    print(x)
# 6)10、8、6、4
for x in range(10, 3, -2):
    print(x)
3.while循环
"""
语法:
while 条件语句:
    循环体

执行过程:
不断判断条件是否为True,为True就执行循环体,直到条件语句的结果为False,整个循环结束

"""
x = 0
while x < 5:
    print('====')
    x += 1

4.for循环和while循环的选择
"""
循环次数确定的时候用for循环;
循环次数不确定(程序员在写代码的时候无法通过任何方式来确定循环的次数)只能用while循环;

while循环的固定写法:
while True:
    需要重复执行的操作
    if 循环结束的条件:
        break
    
"""
pw = '123123'
while True:
    a = input('请输入密码:')
    if a == pw:
        print('密码输入正确')
        break
    else:
        print('密码输入错误,请重新输入')
2.认识列表
1.列表的作用
# 定义变量保存10个学生的分数
scores = [98, 90, 78, 67, 66, 70, 55, 99, 34, 82]

# 平均分
print(sum(scores)/len(scores))

# 最高分
print(max(scores))

2.什么是列表(list)
"""
1)系统类型,是容器型数据类型(同时保存多个数据);将[]作为容器,里面多个元素(容器中每个独立的数据)用逗号隔开;[数据1, 数据2, ....]
2)列表是可变的(元素的个数和元素的值可变 - 支持增删改操作);
3)列表是有序的(支持索引操作、顺序影响结果)
4)列表的元素:任何类型的数据都可以作为列表的元素
"""
# 1)列表有序
# 列表是有序,所以顺序影响结果
print([10, 20, 30] == [20, 10, 30])  # False
# 集合是无序,所以顺序不影响结果
print({10, 20, 30} == {20, 10, 30})  # True

# 2)列表的元素
list1 = [10, 1.23, True, None, 'abc', [1, 2]]
print(list1)

# 3)空列表
list2 = []
print(list2)
3.获取元素
1.查单个 - 一次获取列表中的一个元素
"""
1)语法:列表[索引]  -  获取列表中指定索引对应的元素
2)说明:
a.列表  -  具体的一个列表或者保存列表的变量
b.[]   -   固定写法
c.索引  -  又叫下标;索引指的是元素在有序序列中的位置信息
           列表一旦确定了,那么列表中每个元素的索引就确定了。
           索引的确定方式:从前往后索引值从0开始不断加1;从后往前从-1开始不断减1

# 注意:索引不能越界
"""
nums = [90, 77, 93, 99, 68]
print(nums[2], nums[-3])

# 注意:索引不能越界

# 练习:已知scores中保存的是一个班级所有学生的分数(分数已经按照从大小排好序)
scores = [99, 97, 95, 88, 80, 79, 73, 66, 62, 57, 40]
# 问题1:打印最高分
print(max(scores))
print(scores[0])
# 问题2:打印最低分
print(min(scores))
print(scores[-1])
# 问题3:打印中位数(如果scores中分数的个数是偶数个,中位数打印2个)
a = len(scores)
print(scores[a // 2])

if a % 2 != 0:
    print(scores[a // 2])
else:
    print(scores[a // 2 - 1], scores[a // 2])

2.切片 - 一次获取多个元素(获取部分元素)
"""
1)完整语法
列表[开始下标:结束下标:步长]

开始下标 - 确定从哪个位置开始获取
结束下标 - 确定结束的位置
步长     - 确定获取方向和取的时候怎么取

2)怎么确定切片的结果
第一步:看从开始下标到结束下标的方向和步长对应的方向是否一致(步长为正:从前往后取;步长为负:从后往前取),如果不一致结果一定是空列表
第二步:确定有效范围(开始下标对应的元素取得到,结束下标对应的元素取不到)
第三步:按照步长的方向和绝对值来获取元素
        方向:为正在有效范围内从前往后取;为负在有效范围内从后往前取
        绝对值:绝对值为1表示1个1个的取;绝对值为2,取1个跳1个在取1个;绝对值为3,取1个跳过2个再取1个

3)怎么写切片表达式获取到需要的数据
第一步:确定开始下标  - 直接将需要获取的第一个元素在原列表中的下标作为开始下标
第二步:确定结束下标  - 根据取到的第一个数据和最后一个数据来确定有效范围,根据结束下标取不到的原则确定结束下标的位置
第三步:确定步长  -   根据获取数据的方向确定步长的正负

"""
names = ['光辉', '小法', '泽拉斯', ' 无极剑圣', '芈月', '龙龟', '牛头', '狗头', '鳄鱼', '猫咪']
print(names[1:4:2])     # 不为空
print(names[-1:2:3])    # []
print(names[2:-2:1])    # 不为空
print(names[2:-2:-1])   # []

print(names[0:-1:3])    # ['光辉', ' 无极剑圣', '牛头']
print(names[-2:1:2])    # []
print(names[3:9:-3])    # []
print(names[8:-9:-4])   # ['鳄鱼', '芈月']
print(names[1:-2:3])    # ['小法', '芈月', '狗头']
print('-----------------------------------------------分割线-----------------------------------------------------------')

# ['小法', '泽拉斯', '无极剑圣']
print(names[1:4:1])
# ['光辉', '泽拉斯', '芈月']
print(names[0:5:2])
# ['无极剑圣', '狗头']
print(names[3:-2:4])
# ['鳄鱼', '龙龟', '泽拉斯']
print(names[-2:1:-3])

# 2)切片的省略写法
"""
完整语法:列表[开始下标:结束下标:步长]

a.省略步长:列表[开始下标:结束下标]  -  相当于步长为1
b.省略开始下标:列表[:结束下标:步长] -  如果步长为正从第一个元素开始;如果步长为负从最后一个元素开始
c.省略结束下标:列表[开始下标::步长] -  如果步长为正一直取到最后一个元素;如果步长为负一直取到第一个元素上
"""
names = ['光辉', '小法', '泽拉斯', ' 无极剑圣', '芈月', '龙龟', '牛头', '狗头', '鳄鱼', '猫咪']
# 省略步长
print(names[3:-2])

# 省略开始下标
print(names[:-3:-1])
print(names[:5])

# 省略结束下标
print(names[3::-1])
print(names[3:])
print(names[::-2])


3.遍历 - 一个一个的获取列表中所以的元素
"""
方法1: - 直接获取元素
for 变量 in 列表:
    循环体(变量就是元素)
    
方法2: - 先获取每个元素的下标,然后再根据下标获取元素
for 变量 in range(len(列表)):
    循环体(变量是元素对应的下标)

列表[下标]

"""
names = ['光辉', '小法', '泽拉斯', ' 无极剑圣', '芈月', '龙龟', '牛头', '狗头', '鳄鱼', '猫咪']
for x in names:
    print(x)

# 统计scores中不及格的人数
scores = [67, 89, 90, 99, 45, 61, 77, 23]
count = 0
for x in scores:
    if x < 60:
        count += 1
print('不及格人数:', count)

for i in range(len(names)):
    print(i, names[i])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值