重学Python03-for循环全攻略

张开发
2026/4/21 5:38:20 15 分钟阅读

分享文章

重学Python03-for循环全攻略
Pythonfor循环详解基本语法与概念for循环用于遍历可迭代对象如列表、元组、字符串等对每个元素执行代码块for 变量 in 可迭代对象: 循环体代码循环体必须缩进通常4空格可迭代对象包括列表、字符串、字典、集合、range对象等遍历不同类型的数据结构列表遍历fruits [苹果, 香蕉, 橙子] for fruit in fruits: print(fruit)字符串遍历for ch in Hello: print(ch) # 逐字符输出字典遍历person {name: 张三, age: 25} for key in person: # 遍历键 print(key) for value in person.values(): # 遍历值 print(value) for k, v in person.items(): # 同时遍历键值 print(f{k}: {v})使用range()控制循环生成数字序列进行循环控制for i in range(5): # 0,1,2,3,4 print(i) for i in range(1,6): # 1,2,3,4,5 print(i) for i in range(0,10,2): # 0,2,4,6,8 print(i) for i in range(5,0,-1): # 5,4,3,2,1 print(i)实用技巧获取遍历索引colors [红, 绿, 蓝] for idx, color in enumerate(colors, start1): print(f第{idx}个颜色是{color})并行遍历多个列表names [小明, 小红] scores [90, 85] for name, score in zip(names, scores): print(f{name}: {score})循环控制语句中断与跳过for i in range(10): if i 3: continue # 跳过当前迭代 if i 7: break # 终止循环 print(i)循环后处理for i in range(3): print(i) else: print(循环正常结束) # 未遇到break时执行高效写法列表推导式squares [x**2 for x in range(10)] # 生成平方数列表 evens [x for x in range(20) if x%20] # 生成偶数列表字典推导式square_dict {x: x**2 for x in range(5)}注意事项避免在遍历时修改原列表# 错误方式 lst [1,2,3] for x in lst: if x%20: lst.remove(x) # 会导致意外跳过元素 # 正确方式 lst [x for x in lst if x%2!0]大数据量遍历时优先使用生成器large_data (x for x in range(1000000)) # 生成器表达式 for item in large_data: process(item)性能优化建议将不变的计算移出循环使用局部变量存储频繁访问的数据考虑使用内置函数如map()、filter()应用示例统计词频text hello world hello python word_count {} for word in text.split(): word_count[word] word_count.get(word, 0) 1多层循环for i in range(1,4): for j in range(1,4): print(f{i}x{j}{i*j}, end ) print()任务1打印成绩表基础遍历 enumerate 格式化可以自己做做使用enumerate遍历学生列表并打印带有序号的成绩表students [张三, 李四, 王五, 赵六, 周七] scores [85, 92, 78, 90, 88] for idx, name in enumerate(students, start1): print(f{idx}. {name} 得分 {scores[idx-1]})输出结果1. 张三 得分 85 2. 李四 得分 92 3. 王五 得分 78 4. 赵六 得分 90 5. 周七 得分 88任务2计算总分和平均分并行遍历 zip 累加通过zip并行遍历学生和分数数据计算总分和平均分total 0 count 0 for name, score in zip(students, scores): total score count 1 average round(total / count, 1) print(f总分{total}) print(f平均分{average})输出结果总分433 平均分86.6任务3成绩等级统计字典遍历 条件分支 continue修改数据并统计各等级人数跳过无效分数scores2 [85, 92, -1, 90, 88] grade_count {优秀: 0, 良好: 0, 及格: 0, 不及格: 0} for score in scores2: if score 0: print(发现无效分数跳过) continue if score 90: grade_count[优秀] 1 elif score 80: grade_count[良好] 1 elif score 60: grade_count[及格] 1 else: grade_count[不及格] 1 for grade, count in grade_count.items(): print(f{grade}: {count}人)输出结果发现无效分数跳过 优秀: 2人 良好: 2人 及格: 0人 不及格: 0人任务4查找特定学生break else 子句使用for...else结构查找学生成绩target input(输入学生姓名: ) for name, score in zip(students, scores): if name target: print(f找到{name}成绩为{score}) break else: print(未找到该学生)示例输入输出输入学生姓名: 王五 找到王五成绩为78 输入学生姓名: 刘备 未找到该学生任务5使用列表推导式生成新列表通过列表推导式生成高分列表和等级列表high_scores [score for score in scores if score 85] score_levels [ A if score 90 else B if score 80 else C if score 60 else D for score in scores ] print(f高分列表: {high_scores}) print(f等级列表: {score_levels})输出结果高分列表: [85, 92, 90, 88] 等级列表: [B, A, C, A, B]任务6嵌套循环打印成绩分布图使用嵌套循环绘制分数分布条形图for name, score in zip(students, scores): print(f{name} ({score}): , end) for _ in range(score // 5): print(*, end) print()输出结果张三 (85): ********* 李四 (92): ********** 王五 (78): ******* 赵六 (90): ********* 周七 (88): *********知识点总结enumerate遍历序列时同时获取索引和值支持自定义起始序号。zip并行遍历多个可迭代对象高效处理关联数据。continue跳过当前循环中的特定条件继续下一次迭代。for...else循环正常结束后执行else代码块若被break中断则不执行。列表推导式简洁生成新列表支持条件过滤和多分支逻辑。嵌套循环外层控制整体流程内层处理细节逻辑如重复打印字符。

更多文章