Python碎片日记17——while循环、for循环、range、zip、enumerate

本文介绍了Python中的循环结构,包括while循环的使用,强调了else语句和break、continue的作用。接着讨论了for循环的特点,如自动解包和效率问题。range()函数生成连续整数序列,适用于for循环遍历。zip()函数用于并行遍历多个序列,而enumerate()则提供在迭代中同时获取值和索引的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

while循环

while ...:
        ...
else:
        ...

while后的表达式不允许有赋值语句(Python中的表达式都如此)。
当while的循环运行完(无中断)会进入else语句。
没有do until语句。
可以用pass或…代替空白代码(三个点还可以用来初始化)。
break和continue可以用来中断和跳到下次循环。

for循环

for ... in ...:
        ...
else:
        ...

else、break、continue作用同上。
for后面的变量会自动解包,哪怕是嵌套的序列结构(有点和序列赋值的解包类似):

for ((a,b),c) in [([1,2],3), ['xy',6]]:print(a,b,c) 
#1 2 3
#x y 6
for a,*b, c in [(1,2,3,4), (2,3,4,5)]:print(a,b,c)
# 1,[2,3],4
# 2,[3,4],5

通常情况下,while()会比for()慢(因为需要更多输入)。

range

range()返回一系列连续增加的整数(左闭右开),可用于在for中内遍历数个序列。
产生对象可迭代,不可直接显示。
步进为x的遍历方法:

# 方法一:使用带步长的range方法:
for i in range(0, len(L), x):...
# 方法二:使用分片:
for i in L[::x]:...

只支持迭代、索引和len函数:

R = range(1,6)
len(R) #len函数
R[3]#正索引
R[-1] # 负索引
# 迭代:
I = iter(R)
next(I)

zip

zip()返回并行元素的元组对,可用于在for中内遍历数个序列。
只要可迭代就可以用zip,产生对象可迭代。
可以多个序列,配对到最短的序列的最后一个。

zip(L1,L2)#将两个序列元素配对
for (x,y) in zip(L1,L2):...

便于生成字典:

dict(zip(keys,vals))

enumerate

在迭代中,有时既需要迭代值,又需要知道是对应的第几次迭代,可以用此函数实现。
返回一个生成器对象(可迭代的)。

for (index, item) in enumerate(L):...
[c*i for (i,c) in enumerate(L)]

与next()配合:

S = 'spam'
E = enumerate(S) #E是一个enumerate对象
next(E) # 返回index,item对,(0,'s')
next(E) # (1,'p')
...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值