python中的zip()内置函数

zip(*iterables)

  • 概述:

    创建一个迭代器,用来聚合每个可迭代对象中的元素。

    zip()函数会返回一个元组的迭代器,其中第i个元组包含每个参数序列或可迭代对象中的第i个元素。当最短的可迭代参数遍历到末尾的时候,返回的元组迭代器的结束位置也就确定了。

    如果传入的可迭代参数只有一个,那么返回的元组迭代器每次迭代产生的对象是一个长度为1的元组,可能有些绕,可以看看下面的例子:

    # coding=utf-8
    
    
    l = [1, 2, 3]
    z = zip(l)
    print('zip()函数返回的对象是:', type(z))
    t = next(z)
    print('zip对象每次迭代返回的对象类型是:', type(t))
    print('本例的zip对象每次迭代返回的对象长度是:', len(t))
    
    
    '''output
    zip()函数返回的对象是: <class 'zip'>
    zip对象每次迭代返回的对象类型是: <class 'tuple'>
    本例的zip对象每次迭代返回的对象长度是: 1
    '''
    

    如果没有参数序列,zip()函数会返回一个空的迭代器。

    zip函数的功能等同于下面的代码:

    def zip(*iterables):
        # zip('ABCD', 'xy') --> Ax By
        # sentinel是一个哨兵
        sentinel = object()
        iterators = [iter(it) for it in iterables]
        while iterators:
            result = []
            for it in iterators:
                # 如果迭代器it迭代结束,那么会将sentinel返回
                elem = next(it, sentinel)
                # 如果下面的条件成立,说明存在迭代器迭代结束
                if elem is sentinel:
                    return
                result.append(elem)
            yield tuple(result)
    
  • 参数:

    • 第一个参数*iterables:可迭代对象序列,可以接收多个可迭代对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值