Python一一while和for循环

While循环

一般格式:

while <test>
    <statement1>
else:
    <statement2>

break、continue、pass和循环else

break:跳出最近所在的循环(跳过整个循环语句)。

continue:跳到最近所在循环的开头处(来到循环的首行)。

pass:什么事也不做,只是空占位语句。

循环else块:只有当循环正常离开时才会执行(也就是没有碰到break语句)

一般循环格式

while <test1>:
    <statement1>
    if <test2>: break
    if <test3>: continue
else:
    <statement2>

pass语句是无运算的占位语句。

用途:忽略try语句所捕获的异常,以及定义带属性的空类对象,而该类实现的对象行为就像其他语言的结构和记录。pass有时指的是以后会填上,只是暂时用于填充函数主体而已。

在Python3.0中还可以使用...来省略代码。

关于循环else分句的更多内容

在这里,我们对标志位进行初始化、设置以及稍后再进行测试,从而确认搜索是否成功,这是有效的Python程序,也的确可以运行。然而这正是循环else分句所要处理的结构种类。以下是else的等效版本。

for循环

for循环在Python中是一个通用的序列迭代器:可以遍历任何有序的序列对象内的元素。for语句可用于字符串、列表、元组、其他内置可迭代对象以及之后我们能够通过类所创建的新对象。

一般格式

for <target> in <object>
    <statements>
else:
    <statements>

完整格式

for <target> in <object>
    <statements>
    if <test>: break
    if <test>: continue
else:
    <statements>

基本应用

for循环中的元组、字典和列表赋值

Python3.0在for循环中扩展的序列赋值

可以使用Python3.0的扩展序列解包赋值语法,来提取序列中的序列的元素和部分。

嵌套for循环

编写循环的技巧

如果你在列表中需要每隔一个元素或每隔两个元素访问,或者在过程中修改列表,或者在同一个for循环内,并行遍历一个以上的序列,该如何操作?

Python提供了两个内置函数,在for循环内定制迭代:

(1).内置range函数返回一系列连续增加的整数,可作为for中的索引。

(2).内置zip函数返回并行元素的元组的列表,可用于在for中内遍历数个序列。

循环计数器:while和range

range是一个迭代器,会根据需要产生元素:一个参数时,range会产生从零算起的整数列表,但其中不包括该参数的值。如果传进两个参数,第一个将视为下边界。第三个选用参数可以提供步进值。

非完备遍历:range和分片

除非你有特殊的索引要求,不然在可能的情况下,最好使用Python中的简单的for循环,不要用while,并且不要在for循环中使用range调用,只将其视为最后的手段。更简单的办法总是更好的。

但是,如之前我们所碰到的问题点:当我们需要每隔一个元素或每隔两个元素访问时,这个时候我们可以采用range和分片进行操作,如下所示:

修改列表:range

上述修改并没有改变L的值,因为修改的是循环变量x,而不是列表L。要真的在我们遍历列表时对其进行修改,我们需要使用索引,让我们可以在遍历时替每个位置赋一个已更新的值。range/len组合可以替我们产生所需要的索引。

并行遍历:zip和map

内置的zip函数让我们使用for循环来并行使用多个序列。在基本运算中,zip会取得一个或多个序列为参数,然后返回元组的列表,将这些序列中的并排的元素配成对。

和range一样,zip在Python3.0中也是一个可迭代的对象。

搭配for循环,它会支持并行迭代

当参数长度不同时,zip会以最短序列的长度为准来截断所得到的元组。

在Python2.6中的map的等价形式

内置map函数,用类似方式把序列的元素配对起来,但是如果参数长度不同,则会为较短的序列用None补齐(而不是按最短的长度截断)

使用zip构造字典

产生偏移和元素

range来产生字符串中元素处的偏移值,而不是那些偏移值处的元素。不过,有时我们需要既返回偏移量又返回偏移量所在的元素,这个时候我们可以使用enumerate

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值