python内置函数enumerate详解

     在Python中,enumerate是一个内置函数(其实是一个class),用于将一个可遍历的数据对象(如列表、元组或字符串等)组合为一个索引序列,同时列出数据下标和数据本身,一般用在for循环当中。

平常使用中可以替代 range() 和 len()函数,在需要同时遍历索引和元素的情况下,使用 enumerate() 使代码更加简洁和高效。

源代码中大家可以看到enumerate类定义了__iter__ 和__next__魔法方法,之前文章我们也说过定义了这两种方法的可以作为迭代器使用。

函数可以接收2个参数

1)iterable(必须):可迭代对象,如列表、元组、字符串等。

2)start(可选):默认为0。不为0 意思是指定索引的起始值,比如start=1代表索引从1开始而不是从0开始。

使用next()函数打印enumerate函数生成的元素

list1 = ['name', 'age', 'color']
new_iterrable = enumerate(list1)
print(next(new_iterrable))
print(next(new_iterrable))
print(next(new_iterrable))
#结果
(0, 'name')
(1, 'age')
(2, 'color')

可以看出来生成的元素是一个元组类型,第一个元素是索引下标,第二个元素是原序列的内容。

示例:索引从0开始,循环打印元素位置和元素本身

list1 = ['name', 'age', 'color']
for index, value in enumerate(list1):
  print(f'Index: {index}, Value: {value}')
#结果
Index: 0, Value: name
Index: 1, Value: age
Index: 2, Value: color

示例:索引从1开始,循环打印元素位置和元素本身

list1 = ['name', 'age', 'color']
for index, value in enumerate(list1,start=1):
print(f'Index: {index}, Value: {value}')
#结果
Index: 1, Value: name
Index: 2, Value: age
Index: 3, Value: color

如果可对象传入的是字典,默认是按照字典的键生成索引序列,除非是给定dict.values()/dict.items()。

dict1= {'name':'wxg', 'age':21, 'color':'black'}
for index, value in enumerate(dict1,start=1):
print(f'Index: {index}, Value: {value}')
#结果
Index: 1, Value: name
Index: 2, Value: age
Index: 3, Value: color

如果传入的对象是集合,大家要注意了 ,因为集合是无序的,得到的索引序列跟实际想要的可能会不一样

set1= {'name','age','color'}
for index, value in enumerate(set1,start=1):
print(f'Index: {index}, Value: {value}')
#结果 原本第二个元素age跑到了第一个位置上。
Index: 1, Value: age
Index: 2, Value: color
Index: 3, Value: name

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习和关注,谢谢大家。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科雷learning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值