简单分享 for循环,从基础到高级

1. 基础篇:Hello, For Loop!

想象一下,你想给班上的每位同学发送“Hello!”,怎么办?那就是for循环啦,

eg:首先有个名字的列表,for循环取出,分别打印

names = ["Alice", "Bob", "Charlie"]
for name in names:
    print(f"Hello, {name}!")

2. 计数助手:enumerate来帮忙

给每个同学编号,是不是更正式点?enumerate函数能助你一臂之力:

for num,name in enumerate(names):

   print(f"{i+1}. Hello, {name}!")

3. 列表生成式:简洁之美

想要快速创建一个新列表,比如每个名字后面加个"!"?

excited_names = [f"{name}!" for name in names]
print(excited_names)

4. 范围函数range的魔法

想数数?range函数是你的数字精灵:

for i in range(9):  # 从0到8,数头不数尾
    print(i)

5. 嵌套循环:编织复杂图案

记得小时候的九九乘法表吗?Python帮你轻松绘制:俄罗斯套娃,一层又一层。

for i in range(1, 10):
    for j in range(1, i+1):
        print(f"{j}x{i}={i*j}", end="\t")
    print()  # 换行

6. break和continue:控制流的指挥棒

遇到不喜欢的同学,直接跳过?continue出场:

for name in names:
    if name == "Bob":
        continue
    print(f"Hello, {name}!")

7. else子句:循环的附加惊喜

你知道吗?for循环后还能跟个else?如果循环正常结束,没有遇到breakelse里的代码就执行。

for i in range(5):
    if i == 3:
        break
else:
    print("循环顺利完成,没被break掉!")

8. 使用zip:并行处理

有两组数据要一起处理?zip函数让你左右开弓:zip就像一条神奇的纽带,把列表绑在一起

names = ["Alice", "Bob", "Charlie"]
ages = [16, 17, 20]
for name, age in zip(names, ages):
    print(f"{name} is {age} years old.")

9. 遍历字典:键值对的舞蹈

字典里的秘密,for也能探查:通过.items(),每个键值对都跳起了双人舞。

my_dict = {"pear": 5, "banana": 9, "orange": 98}
for key, value in my_dict.items():
    print(f"I have {value} {key}(s).")

10. 逆序循环:时光倒流

想反着数数,或者倒着念名字?用reversed函数:时光倒流,从最后一个同学开始告别。

for name in reversed(names):
    print(f"Goodbye, {name}!")

11. 迭代器与next函数:深海探险

知道吗?所有可迭代对象都可以用迭代器来玩:iter()制造潜水艇,next()带你潜入下一个宝藏。

it = iter(names)
print(next(it))  
print(next(it))  

12. 高级技巧:列表推导结合条件判断

结合条件,快速筛选出喜欢的名字:

vowel_start_names = [name for name in names if name[0].lower() in 'aeiou']
print(vowel_start_names)

13. 生成器表达式:轻量级迭代神器

生成器是Python的一大特色,非常适合处理大数据流。

# 生成所有小于10的平方数,但不一次性加载到内存中
squares = (i**2 for i in range(10))
for square in squares:
    print(square)

14. 列表推导与循环嵌套的高级应用

当你需要处理多维数据时,嵌套的列表推导可以非常直观:这段代码仿佛是在进行空间变换,将矩阵沿主对角线翻转。

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 转置矩阵
transposed = [[row[i] for row in matrix] for i in range(3)]
for row in transposed:
    print(row)

15. 利用itertools:循环的高级工具箱

Python的itertools模块提供了强大的迭代工具。比如,你想交替合并两个列表:

itertools就像一个瑞士军刀,里面藏着各种循环处理的利器。

from itertools import chain

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']

# 使用chain交替合并
merged = list(chain.from_iterable(zip(list1, list2)))
print(merged)  # 结果: [1, 'a', 2, 'b', 3, 'c']

16. 循环效率优化:理解迭代原理

了解Python的迭代机制能帮助你写出更高效的代码。例如,避免在循环内部进行列表的append操作,特别是在循环体很大时,可以考虑预分配列表大小或使用列表生成式。

17. 循环与异常处理:稳健的循环

在处理可能抛出异常的循环时,使用try-except可以增加代码的健壮性,即使遇到除以零的错误,循环也不会终止,而是优雅地处理异常,eg:

numbers = [1, 0, 3, 4]
for num in numbers:
    try:
        print(1 / num)
    except ZeroDivisionError:
        print("Oops! Can't divide by zero.")

好了,今天的分享就到这里了,有喜欢的哥哥姐姐们,欢迎大家留言讨论^_^如果本文对你有帮助,请点赞、转发哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache APISIX 介绍

Apache APISIX 是一个动态、实时、高性能的云原生API网关,属于Apache软件基金会旗下的项目。以下是对Apache APISIX的详细介绍: 一、基本概述 定义:Apache APISIX是一个提供丰富流量管理功能的云原生API网关。功能:包括负载均衡…

git出现Permission denied问题

Warning: Permanently added ‘icode.baidu.com,10.11.81.103’ (RSA) to the list of known hosts. Permission denied (baas,keyboard-interactive,publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the…

nodejs操作excel文件实例,读取sheets, 设置cell颜色

本代码是我帮客户做的兼职的实例,涉及用node读取excel文件,遍历sheets,给单元格设置颜色等操作,希望对大家接活有所帮助。 gen.js let dir"D:\\武汉烟厂\\山东区域\\备档资料\\销区零售终端APP维护清单\\走访档案\\2024年6月…

Spring之事务失效的场景

Spring事务失效的场景 异常捕获处理:自己处理了异常,没有抛出。解决:手动抛出抛出检查异常:配置rollbackFor属性为Excetion非public方法导致事务失效,改为public 1、异常捕获处理 示例: 张三1000元&#…

7月形势分析-您下一步该如何做,才能走出困境?

马上工程项目,再有三五天就要结束的了。即便推后也不会超过一周时间了。所以需要考虑将来干啥呢?  一方面就是继续去济宁做建筑工程的活。管吃住,但是因为至亲之间,难免咋说呢,总之还是不太舒服的样子。管事情多&…

bigNumber的部分使用方法与属性

场景:最近做IoT项目的时候碰到一个问题,涉及到双精度浮点型的数据范围的校验问题。业务上其实有三种类型:int、float和double类型三种。他们的范围分别是: //int int: [-2147483648, 2147483647],//float float: [-3402823466385…

PHP7源码结构

PHP7程序的执行过程 1.PHP代码经过词法分析转换为有意义的Token; 2.Token经过语法分析生成AST(Abstract Synstract Syntax Tree,抽象语法树); 3.AST生成对应的opcode,被虚拟机执行。 源码结构&#xff1…

一切为了安全丨2024中国应急(消防)品牌巡展武汉站成功召开!

消防品牌巡展武汉站 6月28日,由中国安全产业协会指导,中国安全产业协会应急创新分会、应急救援产业网联合主办,湖北消防协会协办的“一切为了安全”2024年中国应急(消防)品牌巡展-武汉站成功举办。该巡展旨在展示中国应急(消防&am…

qt QTreeView的简单使用(多级子节点)

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);setWindowTitle("QTreeView的简单使用");model new QStandardItemModel;model->setHorizontalHeaderLabels(QStringList() << "left&q…

【数据结构 - 时间复杂度和空间复杂度】

文章目录 <center>时间复杂度和空间复杂度算法的复杂度时间复杂度大O的渐进表示法常见时间复杂度计算举例 空间复杂度实例 时间复杂度和空间复杂度 算法的复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏&…

[leetcode]longest-arithmetic-subsequence-of-given-difference. 最长定差子序列

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int longestSubsequence(vector<int> &arr, int difference) {int ans 0;unordered_map<int, int> dp;for (int v: arr) {dp[v] dp[v - difference] 1;ans max(ans, dp[v]);}return ans…

Qt源码分析:窗体绘制与响应

作为一套开源跨平台的UI代码库&#xff0c;窗体绘制与响应自然是最为基本的功能。在前面的博文中&#xff0c;已就Qt中的元对象系统(反射机制)、事件循环等基础内容进行了分析&#xff0c;并捎带阐述了窗体响应相关的内容。因此&#xff0c;本文着重分析Qt中窗体绘制相关的内容…

ECharts 快速入门

文章目录 1. 引入 ECharts2. 初始化 ECharts 实例3. 配置图表选项4. 使用配置项生成图表5. 最常用的几种图形5.1 柱状图&#xff08;Bar Chart&#xff09;5.2 折线图&#xff08;Line Chart&#xff09;5.3 饼图&#xff08;Pie Chart&#xff09;5.4 散点图&#xff08;Scatt…

如何完成域名解析验证

一&#xff1a;什么是DNS解析&#xff1a; DNS解析是互联网上将人类可读的域名&#xff08;如www.example.com&#xff09;转换为计算机可识别的IP地址&#xff08;如192.0.2.1&#xff09;的过程&#xff0c;大致遵循以下步骤&#xff1a; 查询本地缓存&#xff1a;当用户尝…

Linux内核 -- 多线程之完成量completion的使用

Linux Kernel Completion 使用指南 在Linux内核编程中&#xff0c;completion是一个用于进程同步的机制&#xff0c;常用于等待某个事件的完成。它提供了一种简单的方式&#xff0c;让一个线程等待另一个线程完成某项任务。 基本使用方法 初始化 completion结构需要在使用之…

顺序串算法库构建

学习贺利坚老师顺序串算法库 数据结构之自建算法库——顺序串_创建顺序串s1,创建顺序串s2-CSDN博客 本人详细解析博客 串的概念及操作_串的基本操作-CSDN博客 版本更新日志 V1.0: 在贺利坚老师算法库指导下, 结合本人详细解析博客思路基础上,进行测试, 加入异常弹出信息 v1.0补…

已解决java.awt.geom.NoninvertibleTransformException:在Java2D中无法逆转的转换的正确解决方法,亲测有效!!!

已解决java.awt.geom.NoninvertibleTransformException&#xff1a;在Java2D中无法逆转的转换的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 1. 检查缩放因子 修改后的缩放变换 …

关键路径——C语言(理论)

关键路径&#xff0c;是项目网络中从起始事件到终止事件的最长路径&#xff0c;决定了项目的最短完成时间。 关键路径中的任务没有任何可调整的余地&#xff0c;如果任何一个任务被延迟&#xff0c;整个项目的完成时间也会被延迟。 假设我们现在有一个图&#xff1a;把图的边…

node编译打包Error: error:0308010C:digital envelope routines::unsupported

问题描述&#xff1a; 报错&#xff1a;Error: error:0308010C:digital envelope routines::unsupported 报错原因&#xff1a; 主要是因为 nodeJs V17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制&#xff0c;nodeJs v17 之前版本没影响&#xff0…

【CH32V305FBP6】USBD HS 虚拟串口分析

文章目录 前言分析端点 0USBHS_UIS_TOKEN_OUT 端点 2USBHS_UIS_TOKEN_OUTUSBHS_UIS_TOKEN_IN 前言 虚拟串口&#xff0c;端口 3 单向上报&#xff0c;端口 2 双向收发。 分析 端点 0 USBHS_UIS_TOKEN_OUT 设置串口参数&#xff1a; 判断 USBHS_SetupReqCode CDC_SET_LIN…