enumerate方法用于做什么,如何使用
Admin 2022-08-17 群英技术资讯 1182 次浏览
这篇文章主要介绍“enumerate方法用于做什么,如何使用”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“enumerate方法用于做什么,如何使用”文章能帮助大家解决问题。__iter__()方法:返回迭代器本省__next__()方法:返回迭代器的下一项同时,Python中提供数据类型如列表、字典、元组等序列是可迭代对象,可结合for...in 来进行遍历为使我们的代码更加高效且优雅,Python也提供两个关于迭代的方法。因此,本期我们来学习enumerate函数和zip函数的相关使用方法,Let's go~~
我们在上述了解了迭代器的相关的知识点,对于可迭代对象列表、字典等可以使用for...in来进行快速遍历。例如对序列items使用for循环进行如下遍历,不用进行计算长度多余步骤。
for item in items:
但是,如上的遍历无法知道items序列每一个元素的索引,如果实际场景中,需要使用元素的索引呢?通常,我们会创建一个变量index,来记录元素的索引位置
index = 0
for item in items:
# options
index += 1
虽然上述方式可以解决我们的需求,但是代码显示非常的冗余,不符合pythonic的规范
在Pythonic要求中,我们可以使用enumerate()函数来替代上述实现方法
for index,item in enumerate(items):
# options
...
但是,当序列中的元素是元组类型时,在使用enumerate()函数时,需要对value进行严格区分。
data = [(1,2),(3,4),(5,6),(7,8)]
# correct
for index,(x,y) in enumerate(data):
...
# Error
for index,x,y in enumerate(data):
...

enumerate()函数时针对单个序列遍历处理。zip则是针对需要处理两个及以上的序列遍历处理。
zip 处理的是多对象迭代的,比如要同时迭代两列表name,age。按照传统思路只能使用下标遍历的方式,对于迭代器则运用不上。
但是使用下标遍历的方式,会有两个问题:
Python 提供zip()函数可以解决以上两问题。
names = ["bone","anne","tom","tony"]
ages = [12,16,19]
for name,age in zip(names,ages):
print(name,age)
...
bone 12
anne 16
tom 19
...
zip(x,y)会自动返回一个元组(a,b)的迭代器,其中x来自a,y来自b。当某个序列到结尾了,迭代也会随之结束。迭代长度跟参数中最短序列长度一致。
names = ["bone","anne","tom","tony"]
ages = [12,16,19]
for stu in zip(names,ages):
print(stu)
...
('bone', 12)
('anne', 16)
('tom', 19)
...
当然,如果要以长度最长的列表为一致时,我们可以选择 iterators.zip_longset() 函数来代替。
from itertools import zip_longest
for stu in zip_longest(names,ages):
print(stu)
...
('bone', 12)
('anne', 16)
('tom', 19)
('tony', None)
...
同时,使用zip()函数可以方便对两列表打包生成字典:
s = dict(zip(names,ages))
print(s)
...
{'bone': 12, 'anne': 16, 'tom': 19}
...
zip()会创建一个迭代器来作为结果返回的。如果将结果需要存储在列表中,则需要list()进行转换
print(list(zip(names,ages)))
...
[('bone', 12), ('anne', 16), ('tom', 19)]
...
本期对Python针对序列遍历符合PythonIC的两种方法 enumerate函数和zip函数enumerate函数可以方便处理索引问题,zip函数处理多对象迭代场景。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了python 教程之blinker 信号库,文章基于python的相关资料展开详细的内容说明。具有一定的参考价价值,需要的小伙伴可以参考一下
本文主要介绍了通过Python实现简单的支持联机对战的游戏——支持局域网联机对战的五子棋小游戏。废话不多说,快来跟随小编一起学习吧
在看一些Python开源代码时,经常会看到以下划线或者双下划线开头的方法或者属性,到底它们有什么作用,又有什么样的区别呢?今天我们来总结
文本主要给大家分享使用python怎么实现整数反转,下面分享了实现思路以及几种实现整数反转的方法,感兴趣的朋友可以参考,下面我们就一起来看看python实现整数反转要怎么做吧!
所谓的配置热加载,也就是说当服务收到配置更新消息之后,我们不用重启服务就可以使用最新的配置去执行任务。本文将介绍如何用Python实现配置热加载,需要的可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008