Effective Python 讀書筆記: 第11條: 用zip函數同時遍歷兩個迭代器

# -*- encoding: utf-8 -*-

import os

'''
第11條: 用zip函數同時遍歷兩個迭代器

關鍵:
1 zip方法
作用: 把兩個或兩個以上的迭代器封裝爲生成器,可以稍後求值
zip生成器會從每個迭代器中獲取當前迭代器的下一個值,然後把值匯聚成元組

2 注意點
python 2中的zip會把迭代器產生的值匯聚成元組,並把元組組成的列表返回。所以不是zip迭代器
帶來內存問題,使用itertools中的izip函數
zip中只要有一個迭代器運行完成,就不會產生元組了

3 總結
zip可以將平行遍歷多個迭代器,python 2請用itertools.izip, python 3用zip。

參考:
Effectiv Python 編寫高質量Python代碼的59個有效方法

'''
def useZip(data):
    lens = [len(value) for value in data]
    print lens
    maxLen = -1
    maxValue = ""
    for length, value in zip(lens, data):
        if length > maxLen:
            maxValue = value
            maxLen = length
    print "max value: {maxValue}, max length: {maxLen}".format(
        maxLen=maxLen,
        maxValue=maxValue
    )


def process():
    data = ['C++', 'Python', 'C', 'Android', 'Qt', 'Java', 'Ruby']
    useZip(data)


if __name__ == "__main__":
    process()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章