1.xrange代替range
一般情況下,需要產生一定範圍內的數字時,會使用range
函數
L = 100
for i in range(L):
print(i)
但是,當L
很大時,range(L)
會首先生成一個大列表,需要消耗大量內存,影響性能。xrange
同range
用法相同,但是其返回的是object
對象,不會一次性生成列表,通過for
的迭代,逐個生成每個數字,類似於生成器。
L = 100
for i in xrange(L):
print(i)
注意:Python 3.x已經去掉
xrange
,全部用range
代替。
2. enumerate代替range
Python提供的enumerate
函數可以同時獲取元素的index
和value.
array = [1,2,3,4,5]
for index, value in enumerate(array):
print(index)
print(value)
同時,可以給enumerate
提供第二個參數,指定開始計數時所用的值(默認爲0)
for index,value in enumerate(array,1): # 從1開始計數
print(index)
print(value)
3.zip同時遍歷兩個迭代器
在編寫Python程序中,有時候會涉及到多個列表對象,與此同時,也會同時遍歷多個有關聯的對象。
可以使用
zip
平行地遍歷多個迭代器
names = ['bob','john','lisa']
ages = [19,20,32]
for name,age in zip(names,ages):
print("%s's age is %s"%(name,age))
zip機制:可以把兩個或者兩個以上的迭代器封裝成生成器,在利用for
遍歷過程中,會從每個迭代器中獲取該迭代器的下一個值,然後將這些值打包成tuple
返回。
注意:當兩個迭代器長度不一樣時,只要有一個耗盡,那麼zip
將不再返回元組,提前終止。