refers to python tutorial
使用循环的一些技巧
- 当我们要循环一个序列(可迭代)的时候, 如果需要同时检索索引和对应的值, 我们可以用内置函数enumerate():
for i, item in enumerate(iterable):
blablabla...
- 当我们要同时循环两个序列的时候, 可以用zip():
t1 = (1, 3, 5)
t2 = (2, 4, 6)
for item1, item2 in zip(t1, t2):
blablalba...
- 要倒序的遍历一个序列时, 用reversed():
for i in reversed(xrange(1,10,2)):
print i
- 要遍历一个有序的序列, 用sorted():
l = [1, 3, 3, 5]
for item in sorted(set(l)):
blablabla...
- 要同时遍历一个字典的键值对时, 用字典对象的iteritems():
d = {'1': 'a', '2': 'b', '3': 'c'}
for k, v in d.iteritems(d):
blablabla...
- 最后一点建议, 如果想要在遍历过程中修改序列的值, 最好是建一个新序列, 以免误操作.
关于condition需要注意的:
- while和if语句里不止可以有比较符, 可以有任何的操作符. 这是python的一个特色, 也是我特别喜欢的一点, 非常简洁好用.
比如while或者if后接数字, 如果等于0, 就相当于假, 如果非零那就是真:
a = 1
b = 2
if not a * 2 - b:
print 'hello'
如果接序列, 如果非空就代表真, 否则为假:
a = [1, 3]
b = []
if a:
blabla...
if b:
blabla...
- 比较符可以连着用:
if a < b == c:
blabla...
这里先比较a<b, 然后比较b==c.
- 条件语句之间可以用and, or, not; 而不是&&, ||, !. 是不是非常的人性化, 非常的不反人类, 非常的readable. I love this design!!!
优先级是这样的: 比较符最高, not次之, and再次之, or最后.
比如: not a>b and c or d, 相当于((not (a>b)) and c) or d - and和or被称作是short-circuit操作符. 执行顺序是从左到右, 一旦得到确定值后面的逻辑运算就不做了.
比如: 1 or b or c
1已经已知了, 后面又接两个or操作符, 无论b和c是真是假最后结果都是真, 所以or b, or c两个运算就都不做了.
引用文档的一个例子:
a = ''
b = 'haha'
c = 'hehe'
d = a or b or c
d
>>> 'haha'