Python学习笔记10

chapter_10

while和for循环


while 循环

while <test>:
    <statement1>
else:
    #当控制权离开循环而又没有碰到break语句时会执行
    <statement2>

break,continue,pass和循环else
break跳出最近所在的循环(跳过整个循环语句)
continue跳过最近所在循环的开头处(来到循环的首行)
pass什么事也不做,只是空占位语句
循环else块只有当循环正常结束时才会执行(也就是没有碰到break语句)

for 循环

  • 一般格式:
for <target> in <object>:
    <statements>
else:
    #当控制权离开循环而又没有碰到break语句时会执行,和while循环一样
    <statements>

循环计数器

>>> list(range(5)),list(range(2,5)),list(range(0,10,2))
([0, 1, 2, 3, 4], [2, 3, 4], [0, 2, 4, 6, 8])

>>> list(range(-5,5))
[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]
>>> list(range(5,-5,-1))
[5, 4, 3, 2, 1, 0, -1, -2, -3, -4]
>>> for i in range(3):
...   print(i,'Pythons')
... 
0 Pythons
1 Pythons
2 Pythons

产生偏移值和元素的遍历

  • 传统做法
>>> S = 'spam'
>>> offset = 0
>>> for item in S:
...   print(item,'appears at offset',offset)
...   offset +=1
... 
s appears at offset 0
p appears at offset 1
a appears at offset 2
m appears at offset 3
  • enumerate 函数实现
>>> S = 'spam'
>>> offset = 0
>>> for item in S:
...   print(item,'appears at offset',offset)
...   offset +=1
... 
s appears at offset 0
p appears at offset 1
a appears at offset 2
m appears at offset 3
  • enumerate 函数返回一个生成器对象: 这种对象支持迭代协议.
>>> S
'spam'
>>> E = enumerate(S)
>>> E
<enumerate object at 0xb749d70c>
>>> next(E)
(0, 's')
>>> next(E)
(1, 'p')
>>> next(E)
(2, 'a')
>>> next(E)
(3, 'm')
>>> next(E)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

并行遍历: zip和map

  • 内置zip函数能够让我们使用for循环来并行使用多个序列
>>> L1 = [1,2,3,4]
>>> L2 = [5,6,7,8]
>>> zip(L1,L2)
<zip object at 0xb735c8cc>
>>> list(zip(L1,L2))
[(1, 5), (2, 6), (3, 7), (4, 8)]
>>> L1 = [1,2,3,4]
>>> L2 = [5,6,7,8]
>>> for (x,y) in zip(L1,L2):
...   print(x, y, '--', x+y)
... 
1 5 -- 6
2 6 -- 8
3 7 -- 10
4 8 -- 12
  • 当参数长度不同时,zip会以最短序列的长度为标准来截断所得的序列
>>> S1 = 'abc'
>>> S2 = 'xyz123'
>>> list(zip(S1,S2))
[('a', 'x'), ('b', 'y'), ('c', 'z')]
  • Python 2.6 中的map的等价形式

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

#Python 2.x中的代码,Python 3.0支持该函数,但用法不是这样
>>> S1 = 'abc'
>>> S2 = 'xyz123'
>>> map(None,S1,S2)
[('a', 'x'), ('b', 'y'), ('c', 'z'), (None, '1'), (None, '2'), (None, '3')]
  • Python 3.0 中的map函数
  • map 是一个值生成器,第一个参数为函数名,第二个参数将作为第一个参数表示的函数的参数来执行.
>>> list(map(ord,'spam'))
[115, 112, 97, 109]
  • 等效于
>>> res = []
>>> for c in 'spam': res.append(ord(c))
... 
>>> res
[115, 112, 97, 109]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值