哦,這就是真正牛X的程序員。不過,他也僅僅是牛X罷了,還不是大神。大神程序員是什么樣兒呢?他是掃地僧,大隱隱于市。
先搞清楚這些名詞再說別的:
循環(loop),指的是在滿足條件的情況下,重復執行同一段代碼。比如,while語句。
迭代(iterate),指的是按照某種順序逐個訪問列表中的每一項。比如,for語句。
遞歸(recursion),指的是一個函數不斷調用自身的行為。比如,以編程方式輸出著名的斐波納契數列。
遍歷(traversal),指的是按照一定的規則訪問樹形結構中的每個節點,而且每個節點都只訪問一次。
對于這四個聽起來高深莫測的詞匯,在教程中,已經涉及到了一個——循環(loop),本經主要介紹一下迭代(iterate),看官在網上google,就會發現,對于迭代和循環、遞歸之間的比較的文章不少,分別從不同角度將它們進行了對比。這里暫不比較,先搞明白python中的迭代。之后適當時機再比較,如果我不忘記的話,哈哈。
逐個訪問
在python中,訪問對象中每個元素,可以這么做:(例如一個list)
代碼如下:
>>> lst
['q', 'i', 'w', 's', 'i', 'r']
>>> for i in lst:
... print i,
...
q i w s i r
除了這種方法,還可以這樣:
代碼如下:
>>> lst_iter = iter(lst) #對原來的list實施了一個iter()
>>> lst_iter.next() #要不厭其煩地一個一個手動訪問
'q'
>>> lst_iter.next()
'i'
>>> lst_iter.next()
'w'
>>> lst_iter.next()
's'
>>> lst_iter.next()
'i'
>>> lst_iter.next()
'r'
>>> lst_iter.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
做為一名優秀的程序員,最佳品質就是“懶惰”,當然不能這樣一個一個地敲啦,于是就:
代碼如下:
>>> while True:
... print lst_iter.next()
...
Traceback (most recent call last): #居然報錯,而且錯誤跟前面一樣?什么原因
File "<stdin>", line 2, in <module>
StopIteration
>>> lst_iter = iter(lst) #那就再寫一遍,上面的錯誤暫且擱置,回頭在研究
>>> while True:
... print lst_iter.next()
...
q #果然自動化地讀取了
新聞熱點
疑難解答