01A14.Learning Python 5th-迭代和推导

本笔记是基于《Python学习手册-原书第五版》第十四章 迭代和推导

迭代

可迭代对象本质上是序列观念的一种通用化:如果对象是实际保存的序列或是可以在迭代工具上下文中一次产生一个结果的对象,那么就看做是可迭代的。——包括实际序列和按需求计算的虚拟序列。

文件对象有一个名为readline的方法,可以一次从一个文件中读取一行文本。通过到达文件末尾时返回的空字符串来跳出循环。

文件对象还有一个名为__next__的方法,可以一次从一个文件中读取一行文本。到达文件末尾时会引发内置的StopIteration异常。

Python中的迭代协议:所有带有__next__方法的对象会前进到下一个结果,当到达一系列结果的末尾时,__next__会引发StopIteration异常,这种对象在Python中被称为迭代器。

迭代器对象能以for循环或其他迭代工具遍历。

推导

列表推导式产生一个新的列表对象。从语法上讲,其语法来源于集合理论表示法中的一个结构,该结构对集合中的每个元素应用一个操作。

列表推导式写在一个方括号中,因为它们是最终构建一个新的列表的一种方式。

列表推导式通常比for循环运行的更快,因为它们的迭代在解释器内部是以C语言的速度执行的。

# 列表推导式
>>> L = [1,2,3,4]
>>> L = [x + 10 for x in L]
>>> L
[11, 12, 13, 14]

# 等效语句
>>> L = [1,2,3,4]
>>> for i in range(len(L)):
...    L[i] += 10

	
>>> L
[11, 12, 13, 14]

推导表达式中嵌套的for循环可以有一个关联的if分句来过滤掉那些测试不为真的结果项。

>>> L = [1,2,3,4]
>>> L = [x + 10 for x in L if x%2 == 0]
>>> L
[12, 14]

推导表达式还可以进行嵌套循环。

>>> L = [x + y for x in 'abc' for y in 'xyz']
>>> L
['ax', 'ay', 'az', 'bx', 'by', 'bz', 'cx', 'cy', 'cz']

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值