python学习笔记-循环

原文链接:https://blog.csdn.net/sshi9/article/details/122610707
语法:

for 变量 in 可迭代对象 :
    循环体语句

可迭代对象:
Python包含以下几种可迭代对象:

1.序列。包含:字符串、列表、元组

2.字典

3.迭代器对象( iterator )

4.生成器函数( generator )

5.文件对象

range对象
range对象是一个迭代器对象,用来产生指定范围的数字序列。格式为:

range(start, end [step])

生成的数值序列从start开始到end结束(不包含end )。若没有填写start ,则默认从0开始。step 是可选的步长,默认为1。如下是几种典型示例:

for i in range(10) 产生序列:0123456789

for i in range(3,10) 产生序列:3456789

for i in range(3,10,2) 产生序列:3579

嵌套循环
一个循环体可以嵌入另一个循环体,一般称为嵌套循环,或者多重循环

操作利用嵌套循环打印九九乘法表

for m in range(1,10):
    s = " "
    for n in range(1,m+ 1): 
        s += str.format("{0}*{1}= {2}\t",m,n,m*n)
    print(s)

如上循环,外层一个数字,内层遍历m次

break语句
break语句可用于while和for循环,用来结束整个循环。当有嵌套循环时, break语句只能跳出最近一层的循环。

continue语句
continue语句用于结束本次循环,继续下一次。多个循环嵌套时, continue也是应用于最近的一层循环。

else语句
while. for 循环可以附带一个 else语句(可选)。如果for. while 语句没有被break语句结束,则会执行else子句,否则不执行。语法格式如下:

while条件表达式 :

在这里插入图片描述

循环代码优化
虽然计算机越来越快,空间也越来越大,我们仍然要在性能问题上“斤斤计较”。编写循环时,遵守下面三个原则可以大大提高运行效率,避免不必要的低效计算:

1.尽量减少循环内部不必要的计算

2.嵌套循环中,尽量减少内层循环的计算,尽可能向外提。

3.局部变量查询较快,尽量使用局部变量

使用zip()并行迭代
我们可以通过zip0函数对多个序列进行并行迭代, zip0函数在最短序列"用完”时就会停止

[操作]测试zip0并行迭代

names = ("老大",' 老二","老三","老四")
ages = (18,16,20,25)
jobs = ("老师","程序员","公务员")
for name,age.job in zip(names,ages,jobs):
    print("{0}-{1}-{2}".format(name,age,job))

推导式创建序列
推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合,从而避免冗长的代码。推导式是典型的Python风格。

列表推导式
列表推导式生成列表对象,语法如下:

 [表达式      for item in 可迭代对象]
或者: {表达式      for  item  in  可迭代对象   if   条件判断}
 [x for x in range(1,5)]

[1, 2,3, 4]

字典推导式
字典的推导式生成字典对象,格式如下:

{key_ expression : value_ expression        for表达式in 可迭代对象}

类似于列表推导式,字典推导也可以增加if条件判断、多个for循环。

集合推导式
集合推导式生成集合,和列表推导式的语法格式类似:

  {表达式        for item in 可迭代对象}
或者: {表达式        for item in 可迭代对象if 条件判断}

生成器推导式(生成元组)
提示是一个生成器对象,显然元组是没有推导式的

(x forx in range(1,100) if x%9==0)
< generator object < genexpr> at 0x0000000002BD3048>

一个生成器只能运行一次。 第一次迭代可以得到数据,第二次迭代发现数据已经没有了.

gnt = (x for x in range(1,100) if x%9==0)
 for X in gnt:
    print(x,end='')
9 18 27 36 45 54 63 72 81 90 99
 for X in gnt:
    print(x,end=' ')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值