首页 > 编程语言 > 详细

【5】python核心编程 第八章-条件和循环

时间:2015-10-13 15:12:58      阅读:259      评论:0      收藏:0      [点我收藏+]

1、=== range() 的完整语法===

 1 Python 提供了两种不同的方法来调用 range() . 完整语法要求提供两个或三个整数参数:
 2 range(start, end, step =1)
 3 range() 会返回一个包含所有 k 的列表, 这里 start <= k < end , 从 start 到 end , k 每
 4  5 递增 step . step 不可以为零,否则将发生错误.
 6 >>> range(2, 19, 3)
 7 [2, 5, 8, 11, 14, 17]
 8 如果只给定两个参数,而省略 step, step 就使用默认值 1 .
 9 >>> range(3, 7)
10 [3, 4, 5, 6]

2、xrange() 内建函数

1 xrange() 类似 range() , 不过当你有一个很大的范围列表时, xrange() 可能更为适合, 因为
2 它不会在内存里创建列表的完整拷贝. 它只被用在 for 循环中, 在 for 循环外使用它没有意义。
3 同样地, 你可以想到, 它的性能远高出 range(), 因为它不生成整个列表。在 Python 的将来版本
4 中, range() 可能会像 xrange() 一样, 返回一个可迭代对象(不是列表也不是一个迭代器)

3、for else: 只要for 循环是正常结束的(不是通过 break ), else 子句就会执行

4、可变对象和迭代器

 1 记住,在迭代可变对象的时候修改它们并不是个好主意. 这在迭代器出现之前就是一个问题.
 2 一个流行的例子就是循环列表的时候删除满足(或不满足)特定条件的项:
 3 for eachURL in allURLs:
 4   if not eachURL.startswith(http://):
 5     allURLs.remove(eachURL) # YIKES!!
 6 除列表外的其他序列都是不可变的, 所以危险就发生在这里. 一个序列的迭代器只是记录你
 7 当前到达第多少个元素, 所以如果你在迭代时改变了元素, 更新会立即反映到你所迭代的条目上.
 8 在迭代字典的 key 时, 你绝对不能改变这个字典. 使用字典的 keys() 方法是可以的, 因为
 9 keys() 返回一个独立于字典的列表. 而迭代器是与实际对象绑定在一起的, 它将不会继续执行下
10 去:
11 >>> myDict = {a: 1, b: 2, c: 3, d: 4}
12 >>> for eachKey in myDict:
13 ...   print eachKey, myDict[eachKey]
14 ...   del myDict[eachKey]
15 ... a 1
16 Traceback (most recent call last):
17 File "", line 1, in ?
18 RuntimeError: dictionary changed size during iteration

5、生成器表达式

1 列表解析:
2 [expr for iter_var in iterable if cond_expr]
3 生成器表达式:
4 (expr for iter_var in iterable if cond_expr)

 

【5】python核心编程 第八章-条件和循环

原文:http://www.cnblogs.com/jakeyChen/p/4874592.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!