前后端知识库 前后端知识库
首页
    • JavaScript
    • React
    • Vue
  • Python
  • Sanic
  • Linux
  • Ansible
归档
GitHub (opens new window)
首页
    • JavaScript
    • React
    • Vue
  • Python
  • Sanic
  • Linux
  • Ansible
归档
GitHub (opens new window)
  • Sanic

  • Python

    • Python 的动态类型介绍
    • 数字类型
    • Set类型
    • 字符串
    • 列表
    • 元组
    • 通用序列
    • 字典
    • 文件
    • 语句和语法
    • 赋值语句
    • 打印
    • if语句
    • loop循环
    • 迭代器和生成器
    • 文档
    • 函数
    • 作用域
    • 参数
    • 函数的高级特性
    • 模块
    • 模块包
    • 模块高级用法
    • 类 class
    • Python命名空间
    • 运算符重载
    • 类的设计模式
    • 类的高级主题
    • 异常
    • 异常对象
    • Unicode与字节串
    • 管理属性
    • 装饰器
    • 元类
    • 执行细节
  • backend
  • Python
devin
2023-09-09

loop循环

# while、for循环

1.while语句格式:

	while test_expr:
		statement1
	else:#可选
		statement2
1
2
3
4
  • while和else缩进必须一致。

  • else可选。else子句在控制权离开循环且未碰到break语句时执行。即在正常离开循环时执行(break是非正常离开循环)

  • 在while子句中可以使用下列语句: _ break:跳出最近所在的循环到循环外部 _ continute:跳过本次循环后续部分,直接掉转到下一轮循环起始处 * pass:占位符,什么都不做 >在 Python3 中,允许在使用表达式的地方使用...代表, >这是pass语句的一种替代方案。它表示代码随后填充,是未确定的内容

    while语句

    2.for语句格式:

	for target_var in iter_obj:
		statement1
	else:#可选
		statement2
1
2
3
4
  • for和else缩进必须一致。

  • else可选。else子句在控制权离开循环且未碰到break语句时执行。即在正常离开循环时执行(break是非正常离开循环)

  • 在for子句中可以使用break、continute、pass语句

  • target_var是赋值目标,iter_obj是任何可迭代对象。每一轮迭代时将迭代获得的值赋值给target_var,然后执行statement1

    任何赋值目标在语法上均有效,即使是嵌套的结构也能自动解包:

    ```
    for ((a,b),c) in [((1,2),3),((4,5),6)]:#自动解包
    	print(a,b,c)
    ```
    

    当然你也可以手动解包:

    ```
    for both in [((1,2),3),((4,5),6)]:#手动解包
    	((a,b),c)=both
    	print(a,b,c)
    ```
    

    for语句

    3.for扫描文件时,直接使用文件对象迭代,每次迭代时读取一行,执行速度快,占用内存少:

for line in open('test.txt'):
	print(line)
1
2

4.for语句通常比对应的while语句执行速度快

5.Python3 中,range()返回一个迭代器对象。用法为:range(0,10,2),其中0为起始数,10为终止数(不包含),2为步长。默认步长为 1,起始为 0.

Python2 中,range()返回一个列表对象

  • 要得到列表,用list(range(0,10,2))

  • 通常range()用于for循环:

    S="abcdefg"
    for i in range(0,len(S),2):
    	print(S[i],end=" ")
    
    1
    2
    3

    它也等价于下列循环:

    S="abcdefg"
    for c in S[::2]
    	print(c,end=" ")
    
    1
    2
    3

    用 range()优点是它并未复制字符串

  • 当我们遍历列表且对其进行修改时,要用到range()和len()组合。直接用for遍历列表不能修改列表,因为for x in L:遍历的是列表元素,不是列表中元素的位置。
    range()函数

    6.Python3 中,zip()函数返回一个迭代器对象。

    Python2 中,zip()返回一个元组对的列表

  • list(zip(L1,L2))创建一个列表,列表元素为元组对,元组对的第一个元素来自于L1,第二个元素来自于L2,列表长度为L1与L2的最小值

  • zip()可以有两个以上的参数,且这些参数可以是任意的可迭代对象

  • 可以在循环中用自动列表解包:

    	for x,y,z in zip(iter_obj1,iter_obj2,iter_obj3):
    		pass
    
    1
    2

    zip()函数

    7.Python3 中,map()函数生成一个可迭代对象,用法为:map(func,iter_obj)。每一次迭代则在迭代得到的元素上应用函数func。

    Python2 中,map()执行的是另一种语意

    map()函数

    8.enumerate()函数生成一个可迭代对象,用法为:enumerate(iter_obj)。每一次迭代生成一个(index,value)元组,index表示迭代次数,从 0 开始计数,value代表迭代获得的元素值。

enumerate()函数

编辑 (opens new window)
上次更新: 2023/09/09, 12:09:00
if语句
迭代器和生成器

← if语句 迭代器和生成器→

Theme by Vdoing | Copyright © 2023-2023 devin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式