遍历一个序列时,使用$enumerate()$函数可以同时得到索引和对应的值
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
... print i, v
...
0 tic
1 tac
2 toe
同时遍历两个或等多的序列,使用$zip()$函数可以成对读取元素
>>> questions = ['name', 'quest', 'favorite color']
>>> answer = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(question,answer):
... print "What is your {0}? It is {1}.".format(q,a)
...
What is your name? It is lancelot.
What is your quest? It is the holy grail.
What is your favorite color? It is blue.
要反向遍历一个序列,首先正向生成这个序列,然后调用$reversed()$函数
>>> for i in reversed(xrange(1,10,2)):
... pirnt i
...
9
7
5
3
1
要按排序顺序循环一个序列,使用$sorted()$函数,返回一个新的排序的列表,同时保留源不变
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
... print f
...
apple
banana
orange
pear
遍历字典时,使用$iteritems()$方法可以同时得到键和对应的值
>>> knights = {'gallabad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.iteritems():
... print k, v
...
gallahad the pure
robin the brave
若要在循环内部修改正在遍历的序列(例如复制某些元素),建议首先制作副本.在序列上循环不会隐式的创建副本,切片表示法使这尤其方便
>>> words = ['cat', 'window', 'defenestrate']
>>> for w in words[:]:
... if len(w) > 6:
... words.insert(0,w)
...
>>> words
['defenestrate', 'cat', 'window', 'defenestrate']