美文网首页
[笔记] Python核心编程 第八章

[笔记] Python核心编程 第八章

作者: 四明羽客 | 来源:发表于2018-03-13 23:10 被阅读6次

条件表达式(即“三元操作符”) X if C else Y

sorted()和zip()返回一个序列(列表)
reversed()和enumerate()返回一个迭代器

break语句跳出当前循环,所以如果是嵌套循环,只能跳出当前的,而不是跳出所有循环

在while和for循环中使用else语句,else的代码块只有在循环正常完成之后才会执行;所以如果使用break跳出循环,那么else的代码块将不会被执行。另外continue只是立即执行下一次循环,不会破坏循环,所以continue不会影响else子句的执行。

从根本上说,迭代器就是有一个next()方法的对象,而不是通过索引来计数。
换而言之,就是迭代器不会一下生成所有的项,而是在调用next()方法的时候,生成并返回一个新的项,当所有项都取出之后会引发一个StopIteration异常。

any(iter):迭代器iter中只要有一个元素是True,则返回True。另外如果iter是空,则返回False
all(iter):迭代器iter中所有元素是True,则返回True。另外如果iter是空,则返回True

注意:在迭代可变对象的时候去修改它们并不是个好主意

列表解析式
[expr for iter_var in iterable if cond_expr]
if语句可以省略
[expr for iter_var in iterable]

另外也可以嵌套多个for..in..if..语句
>>> [(x+1, y+1) for x in range(5) for y in range(5)]
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3),
(2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (4, 1),
(4, 2), (4, 3), (4, 4), (4, 5), (5, 1), (5, 2), (5, 3), (5, 4),
(5, 5)]

>>> [(x+1, y+1) for x in range(5) if x%2==0 for y in range(5) if y%2!=0]
[(1, 2), (1, 4), (3, 2), (3, 4), (5, 2), (5, 4)]

生成器表达式和列表解析式很相似,只是把方括号改成圆括号
(expr for iter_var in iterable if cond_expr)
同样的它也可以嵌套多个for..in..if语句

相关文章

网友评论

      本文标题:[笔记] Python核心编程 第八章

      本文链接:https://www.haomeiwen.com/subject/qyvqfftx.html