python 内建函数(四)--迭代工具相关zip、enumerate

迭代工具函数

  迭代工具函数的作用是生成一个个性化的可迭代对象

函数:

【1】zip(iter1[, iter2[, ...]])

    返回一个zip对象。

    这个zip对象的每一个元素是一个元组,可以迭代访问。每个对象中的元组个数由参数中长度最短的可迭代对象决定。

    zip对象可用next()方法取值    

In [75]: numbers = [10086, 10000, 10010, 9558]# 长度是 4
    ...: names = ['中国移动', '中国电信', '中国联通'] # 长度是 5
    ...:
    ...: for t in zip(numbers, names):
    ...:     print(t)
    ...: for x, y in zip(numbers, names):
    ...:     print(y, '的客服电话是:', x)
    ...:
(10086, '中国移动')
(10000, '中国电信')
(10010, '中国联通')
中国移动 的客服电话是: 10086
中国电信 的客服电话是: 10000
中国联通 的客服电话是: 10010
In [87]: for t in zip(numbers):
    ...:     print(t)
    ...:     print("=============")
    ...:     print(type(t))
    ...:
    ...:
(10086,)
=============
<class 'tuple'>
(10000,)
=============
<class 'tuple'>
(10010,)
=============
<class 'tuple'>
(9558,)
=============
<class 'tuple'>

In [88]: for t in zip(names):
    ...:     print(t)
    ...:     print("==============")
    ...:     print(type(t))
    ...:
    ...:
('中国移动',)
==============
<class 'tuple'>
('中国电信',)
==============
<class 'tuple'>
('中国联通',)
==============
<class 'tuple'>

In [89]: 

 

In [61]: q
Out[61]: '1234'

In [62]: s
Out[62]: 'weqert'

In [63]: z=zip(s,q)

In [64]: z
Out[64]: <zip at 0x1d9a8683c48>

In [65]: next(z)
Out[65]: ('w', '1')

In [66]: next(z)
Out[66]: ('e', '2')

In [67]: next(z)
Out[67]: ('q', '3')

In [68]: next(z,100)
Out[68]: ('e', '4')

In [69]: next(z,100)
Out[69]: 100

 

自定义zip功能相同的函数 

In [92]: def myzip(iter1, iter2):
    ...:       it1 = iter(iter1)  # 拿出一个迭代器
    ...:       it2 = iter(iter2)
    ...:       while True:
    ...:           a = next(it1)
    ...:           b = next(it2)
    ...:           yield (a, b)
    ...: for t in myzip(numbers, names): #能实现与zip同样的功能
    ...:     print(t)
    ...:
(10086, '中国移动')
(10000, '中国电信')
(10010, '中国联通')
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)

 

【2】enumerate(iterable,start=0)

  参数:iterable,必选,可迭代对象。start,可选,默认为0,start必须为整数 

  作用:用可迭代对象iterable生成一个枚举对象。枚举,一一列举

  返回值:返回一个enumerate对象(枚举对象)。

      枚举对象的每一个元素是一个元组,由 startiterable 的元素组成  

In [55]: for t in enumerate(numbers,10):
    ...:     print(t,"<===> 类型:%s"%type(t))
    ...:
(10, 10086) <===> 类型:<class 'tuple'>
(11, 10000) <===> 类型:<class 'tuple'>
(12, 10010) <===> 类型:<class 'tuple'>
(13, 9558) <===> 类型:<class 'tuple'>

 自定义enumerate功能的函数:

def myenum(iterable):
        it = iter(iterable)
        i = 0
        while True:
            a = next(it)
            yield (i, a)
            i += 1

 

  

posted @ 2020-12-23 17:52  昱成  阅读(111)  评论(0编辑  收藏  举报