# -*- 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()