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

猜你喜欢

转载自blog.csdn.net/qingyuanluofeng/article/details/88812291