python的enumerate函数怎么加判断条件_java中比int大的整数类型

python的enumerate函数怎么加判断条件_java中比int大的整数类型Python的enumerate()函数就像是一个神秘的黑箱,你无法简单地用一句话来概括这个函数的作用与用法。enumerate()函数属于非常有用的高级用法,而对于这一点,很多初学者甚至中级学者都没有意识到。这个函数的基本应用就是用来遍历一个集合对象,它在遍历的同时还可以得到当前元素的索引位置。我们看一个例子:names=[“Alice”,”Bob”,”Carl”]forindex,valueinenumerate(names):print(f'{index}:{va

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Python 的 enumerate() 函数就像是一个神秘的黑箱,你无法简单地用一句话来概括这个函数的作用与用法。

enumerate() 函数属于非常有用的高级用法,而对于这一点,很多初学者甚至中级学者都没有意识到。这个函数的基本应用就是用来遍历一个集合对象,它在遍历的同时还可以得到当前元素的索引位置。

我们看一个例子:

names = ["Alice","Bob","Carl"]
for index,value in enumerate(names):
    print(f'{ 
     index}: { 
     value}')

Jetbrains全家桶1年46,售后保障稳定

这段代码会输入如下内容:

0: Alice
1: Bob
2: Carl

正如你所看到的,这个循环遍历了names列表的所有元素,并通过增加从零开始的计数器变量来为每个元素生成索引。

[如果您想知道上面例子中使用的f’…’字符串语法,这是Python 3.6及更高版本中提供的一种新的字符串格式化技巧。]

用enumerate()让你的循环更加Python化

那么为什么用enumerate()函数去保存运行中的索引很有用呢?

我发现,有很多从C或Java背景转过来的新的Python开发人员有时使用下面这种range(len(…))方法来保存运行中每个元素的索引,同时再用for循环遍历列表:

''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! '''
# 警告: 不建议这么写
for i in range(len(my_items)):
    print(i, my_items[i])

通过巧妙地使用enumerate()函数,就像我在上面的“names”例子中写的那样,你可以使你的循环结构看起来更Pythonic和地道。

你不再需要在Python代码中专门去生成元素索引,而是将所有这些工作都交给enumerate()函数处理即可。这样,你的代码将更容易被阅读,而且减少写错代码的影响。(译者注:写的代码越多,出错几率越高,尽量将自己的代码看起来简洁,易读,Pythonic,才是我们的追求)

修改起始索引

另一个有用的特性是,enumerate()函数允许我们为循环自定义起始索引值。enumerate()函数中接受一个可选参数,该参数允许你为本次循环中的计数器变量设置初始值:

''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! '''
names = ["Alice","Bob","Carl"]
for index,value in enumerate(names,1):
    print(f'{ 
     index}: { 
     value}')

在上面的例子中,我将函数调用改为enumerate(names, 1),后面的参数1就是本次循环的起始索引,替换默认的0:

1: Alice
2: Bob
3: Carl

OK,这段代码演示的就是如何将Python的enumerate()函数默认0起始索引值修改为1(或者其他任何整形值,根据需求去设置不同值)

enumerate()背后是如何工作的

你可能想知道enumerate()函数背后是如何工作的。事实上他的部分魔法是通过Python迭代器来实现的。意思就是每个元素的索引是懒加载的(一个接一个,用的时候生成),这使得内存使用量很低并且保持这个结构运行很快。

请看如下代码:

>>> names = ['Alice', 'Bob', 'Carl']
>>> enumerate(names)
<enumerate object at 0x1057f4120>

在上面这个代码片段中,正如你所见,我使用了和前面一样的示例代码。但是,调用enumerate()函数并不会立即返回循环的结果,而只是在控制台中返回了一个enumerate对象。

正如你所看到的,这是一个“枚举对象”。它的确是一个迭代器。就像我说的,它会在循环请求时懒加载地输出每个元素。

为了验证,我们可以取出那些“懒加载”的元素,我计划在这个迭代器上调用Python的内置函数list()。

>>> list(enumerate(names))
[(0, 'Alice'), (1, 'Bob'), (2, 'Carl')]

对于输入list()中的每个enumerate()迭代器元素,迭代器会返回一个形式为(index,element)的元组作为list的元素。在典型的for-in循环中,你可以利用Python的数据结构解包功能来充分利用这一点特性:

for index, element in enumerate(iterable):
    # ...

总结:Python中的enumerate函数 – 关键点

  • enumerate是Python的一个内置函数。你应该充分利用它通过循环迭代自动生成的索引变量。
  • 索引值默认从0开始,但也可以将其设置为任何整数。
  • enumerate函数是从2.3版本开始被添加到Python中的
  • Python的enumerate函数可以帮助你编写出更加Pythonic和地道的循环结构,避免使用笨重且容易出错的手动生成索引。
  • 为了充分利用enumerate的特性,一定要研究Python的迭代器和数据结构解包功能。

结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

Python基础入门教程推荐:更多Python视频教程-关注B站:Python学习者
Python基础入门教程

Python爬虫案例教程推荐:更多Python视频教程-关注B站:Python学习者
Python爬虫案例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/206742.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Python Errors and Exceptions

    Python Errors and Exceptions

  • datagrip 2021 mac 激活码(在线激活)

    datagrip 2021 mac 激活码(在线激活),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 双机热备系统的方案与软件浅析「建议收藏」

    一、概述双机热备指基于高可用系统中的两台服务器的热备(或高可用),因两机高可用在国内使用较多,故得名双机热备。双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active-Active方式),主-备方式指的是一台服务器处于某种业务的激活状态(即Active状态),另一台服务器处于该业务的备用状态(即Standby状态)。而双主机方式即指两种不同业务分别在

  • 在非XP操作系统下模拟的LockWorkStation函数

    在非XP操作系统下模拟的LockWorkStation函数在非XP操作系统下模拟的LockWorkStation函数文章作者:Delphiscn信息来源:邪恶八进制信息安全团队程序功能:可在非XP的操作系统下所定计算机(为了程序的界面美观,我使用了SUIPack控件,有兴趣的朋友可以去Delphibox.com下载)*********************************************************…

  • C语言pow函数(编程pow函数)

    ❶用C语言编程实现pow函数的功能。#includevoidmain(){inta;//底数intb;//指数inti,j;printf(“输入底数:”);scanf(“%d”,&a);printf(“输入指数:”);scanf(“%d”,&b);j=1;for(i=0;ij*=a;printf(“结果为%d\n”,j);}❷C语言中怎样用POW函数和POW1…

  • Python开发 之 Python3读写Excel文件(较全)[通俗易懂]

    Python开发 之 Python3读写Excel文件(较全)[通俗易懂]Python读写Excel文件用xlrd包读取Excel文件用xlrd包读取Excel文件用法比较简单。importxlrdimportxlwtimportopenpyxlfromdatetimeimportdate,datetimearrayNum=6#array={‘L1′:”,’L2′:”,’L3′:”,’L4′:”,’Question’:”,…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号