Python中zip()函数的解释和可视化(实例详解)

  

 Python中zip()函数的解释和可视化(实例详解)

  

<强> zip()的作用

  

先看一下语法:

        zip (iter1 [, iter2 […]])→zip对象      

Python的内置帮助()模块提供了一个简短但又有些令人困惑的解释:

  

返回一个元组迭代器,其中第i个元组包含每个参数序列或可迭代对象中的第i个元素。当最短的可迭代输入耗尽时,迭代器将停止。使用单个可迭代参数,它将返回1元组的迭代器。没有参数,它将返回一个空的迭代器。

  

与往常一样,当您精通更一般的计算机科学和Python概念时,此模块非常有用。但是,对于初学者来说,这段话只会引发更多问题。让我们尝试通过示例,代码片段和可视化来解释zip()功能:从许多迭代中获取元素,然后……放在一起

  

我们可以通过几个列表来演示zip()的功能:

        大写=[' A ', ' B ', ' C ']   小写=[a, b, c的)      为x, y在zip(大写,小写):   打印(x, y)      

输出:   

  

A B C C

     

但是,不限于两个可迭代对象作为参数传递,我们可以添加任意多个:

        大写=[' A ', ' B ', ' C ']   小写=[a, b, c的)   数量=(1、2、3)      x, y, z的zip(大写字母,小写字母,数字):   打印(x, y, z)      

这将输出:

  
  

1 B B 2 C C 3

     

让我们直观地看一下该zip()函数在Python中的工作方式:

  

 Python中zip()函数的解释和可视化(实例详解)

  

zip()函数的另一个重要警告是如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同:

        大写=[A, B, C, D ', ' E ']   小写=[a, b, c, d的)   数量=(1、2、3)      x, y, z的zip(大写字母,小写字母,数字):   打印(x, y, z)      

输出:   

  

1 B B 2 C C 3

     

正如我们所看到的,即使列出了三个三元组,大写和小写列表具有5和4个元素。

  

要知道的重要一件事是zip()函数返回什么。

  

尽管似乎在调用此函数时会得到一个列的表,但实际上它返回一个称为zip对象的特殊数据类型,这意味着使用索引将无法浏览、下面我们学习如何将其转换为其他数据类型(例如列表)。

  

在此之前,我们还应再来学习一下迭代(迭代),迭代器对象(iterable),迭代器(迭代器)的概念:

  
      <李>迭代是计算机科学的通用术语。它是指对一组元素执行一项操作,一次执行一个元素。一个很好的例子是循环,它适用于每个单独的项目,直到整个项目集运行完毕为止。   <李> Iterable是可以遍历的对象(译者注:在Python中所有东西都是对象,比如说变量,容器,类),Iterable是可以产生迭代器的对象。   <李>迭代器是表示数据流的对象,它一次返回一个元素的数据。它还会记住其在迭代过程中的位置。本质上,它控制应如何迭代可迭代对象。   
  

<强>将zip()对象转换为列表(并使用索引)

  

zip()函数返回一个zip对象(类似于地图()操作方式)。

  

邮政对象提供了一些有趣的功能(迭代速度比列表更快),但是我们经常需要将其转换为列表。为了做到这一点,我们需要调用列表()函数:

        b=(“红”、“绿色”、“蓝色”)   c=[“豹”、“猎豹”,“捷豹”)      print(列表(zip (b, c)))      

输出:   

  

[(“红”,“豹”)(“绿色”、“猎豹”)(“蓝”、“捷豹”)]

     

列表()函数将邮政对象转换为一个元组列表。我们可以使用索引浏览各个元组。出于可读性考虑,我们首先将新列表分配给一个变量:

        b=(“红”、“绿色”、“蓝色”)   c=[“豹”、“猎豹”,“捷豹”)   new_list=列表(zip (b, c))   print (new_list [0])   print (new_list [1])   print (new_list [2])      

这将输出:

  
  

(“红”,“豹”)(“绿色”,“猎豹”)(“蓝”、“捷豹”)

Python中zip()函数的解释和可视化(实例详解)