在Python中迭代序列時,有一些函數非常好用。有些函數位於itertools模塊中,還有一些Python的內建函數十分方便
1.並行迭代
程序可以同時迭代兩個序列。比如有下面兩個列表:
如果想要打印名字和對應的年齡,可以像下面這樣做:
這裏的i是循環索引的標準變量名。
而內建的zip函數就可以用來進行並行迭代,可以把兩個序列壓縮在一起,然後返回一個元組的列表:
現在我可以在循環中解包元組:
zip函數也可以作用於任意多的序列。關於它很重要的一點是zip可以處理不等長的序列,當最短的序列用完的時候就會停止:
2.翻轉和排序迭代
讓我們看看另外兩個有用的函數:reversed和sorted。他們同列表的reverse和sort方法類似,但是作用於任何序列可迭代對象上,不是原地修改對象,而是返回翻轉或者排序後的版本:
雖然sorted方法返回列表,reversed方法卻返回一個更加不可思議的可迭代對象。它們具體的含義不用過多關注,大可在for循環以及join方法中使用,而不會有任何問題。不過卻不能直接對他使用索引,分片以及調用list方法,如果希望進行上述處理,那麼可以使用list類型轉換返回的對象。