enumerate方法用于做什么,如何使用
Admin 2022-08-17 群英技术资讯 567 次浏览
__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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本节介绍了 Python3 中的内置函数以及调试的两种方法。_来自Python3 教程,w3cschool编程狮。
本文主要介绍了Python数组变形的几种实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要为大家介绍了Python中的getattr,__getattr__,__getattribute__和__get__,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
这篇文章主要介绍了解决pytorch trainloader遇到的多进程问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
Python中没有报错提示,其中使用了 try-except-else 的代码块,except是try代码中错误时执行,而except中的代码是pass,也就是在try中代码错误时候直接pass,不给用户编写任何的建议和help。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008