PYTHON以索引-值的形式迭代序列

    当我们需要迭代一个序列,但是又希望记录下序列中当前处理到的元素索引时,内建的enumerate函数可以漂亮的解决这个问题。

>>> items = ['a', 'b', 'c']

>>> for idx, val in enumerate(items):

print(idx, val)

0 a

1 b

2 c

    如果需要打印规范的行号,enumerate函数可以接受一个行号起始的可选参数

>>> for idx, val in enumerate(items, 1):

print(idx, val)



1 a

2 b

3 c

    这种情况特别适合用于追踪记录文件中的行号,当想在错误信息中加上行号时就特别有用。

    enumerate函数的返回值是一个enumerate对象实例,它是一个迭代器,可以返回连续的元组。元组由一个索引值和对传入的序列调用next()而得到的值组成。

    但这里有一个小问题。在元组序列上应用enumerate函数时,如果元组本身也需要被分解展开的话则会出错。

>>> data = [(1, 2), (3, 4), (5, 6)]

>>> #Correct!

>>> for idx, (x,y) in enumerate(data):

print(idx, x, y)



0 1 2

1 3 4

2 5 6

>>> #Error!

>>> for idx, x, y in enumerate(data):

print(idx, x, y)



Traceback (most recent call last):

  File "<pyshell#13>", line 1, in <module>

    for idx, x, y in enumerate(data):

ValueError: not enough values to unpack (expected 3, got 2)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值