本文主要是介绍Python专题——详解enumerate和zip,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文始发于个人公众号:TechFlow,原创不易,求个关注
今天是Python专题的第7篇文章,我们继续介绍迭代相关。
enumerate
首先介绍的是enumerate函数。
在我们日常编程的过程当中,经常会遇到一个问题。
在C语言以及一些古老的语言当中是没有迭代器这个概念的,所以我们要遍历数组或者是容器的时候,往往只能通过下标。有了迭代器之后,我们遍历的过程方便了很多,我们可以直接用一个变量去迭代一个容器当中的值。最简单的例子就是数组的遍历,比如我们要遍历items这个数组。我们可以直接:
for item in items:
通过迭代器的方式我们可以很轻松地遍历数组,而不再需要下标,也不需要计算数组的长度了。但是如果我们在循环体当中需要知道元素的下标该怎么办?
难道我们真的只能在下标和迭代器当中选择一个吗,比如在循环体的外面添加一个变量来记录下标?
idx = 0
for item in items:operation()idx += 1
这样可以解决问题,但是很麻烦,一点也不简洁,用专业的话来说一点也不pythonic(符合Python标准的代码)。为了追求pythonic,于是有了enumerate函数,来解决了我们又想直接迭代又需要知道元素下标的情形。
它的用法也很简单,我们把需要迭代的对象或者迭代器传入enumerate函数当中,它会为我们创建一个新的迭代器,同时返回下标以及迭代的内容。我们来看一个例子:
for i, item in enumerate(items):
除此之外,enumerate还支持传入参数。比如在某些场景当中,我们希望下标从1开始,而不再是0开始,我们可以额外多传入一个参数实现这点:
for i, item in enumerate(items, 1):
循环是我们编程的时候必不可少的操作,也正因此,enumerate函数使用非常广泛。但是有一点需要注意,如果我们迭代的是一个多元组数组,我们需要注意要将index和value区分开。举个例子:
这篇关于Python专题——详解enumerate和zip的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!