为了账号安全,请及时绑定邮箱和手机立即绑定

访问“for”循环中的索引?

访问“for”循环中的索引?

慕田峪7331174 2019-05-30 13:21:55
访问“for”循环中的索引?如何访问如下列表的索引本身?ints = [8, 23, 45, 12, 78]当我使用for循环,在本例中,如何访问循环索引(从1到5)?
查看完整描述

3 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

使用for循环,在本例中如何访问循环索引(从1到5)?

使用enumerate若要在迭代时使用元素获取索引,请执行以下操作:

for index, item in enumerate(items):
    print(index, item)

请注意,Python的索引从零开始,所以上面的内容可以得到0到4。如果要计数1到5,请执行以下操作:

for count, item in enumerate(items, start=1):
    print(count, item)

统一控制流

您所要求的是下面的Pythonic等价物,这是大多数低级语言程序员都会使用的算法:

index = 0            # Python's indexing starts at zerofor item in items:   # Python's for loops are a "for each" loop 
    print(index, item)
    index += 1

或者使用没有for-each循环的语言:

index = 0while index < len(items):
    print(index, items[index])
    index += 1

或者有时更常见(但在Python中是统一的):

for index in range(len(items)):
    print(index, items[index])

使用枚举函数

Python的enumerate功能通过隐藏索引的计算,并将可迭代封装到另一个可迭代(enumerate对象),它生成索引的两个项元组和原始可迭代提供的项。看起来是这样的:

for index, item in enumerate(items, start=0):   # default is zero
    print(index, item)

此代码示例非常好典范Python惯用代码与非Python代码之间区别的例子。惯用代码是复杂的(但并不复杂)Python,其编写方式与预期的使用方式相同。该语言的设计者期望使用惯用的代码,这意味着通常这些代码不仅具有更高的可读性,而且更有效率。

数一数

即使你不需要索引,但你需要一个迭代计数(有时是可取的),你可以从1最后一个数字就是你的数字。

for count, item in enumerate(items, start=1):   # default is zero
    print(item)print('there were {0} items printed'.format(count))

当您说您希望从1到5之间时,计数似乎更符合您的要求(而不是索引)。


一步的解释

要细分这些示例,假设我们有一个要用索引迭代的项列表:

items = ['a', 'b', 'c', 'd', 'e']

现在,我们将这个迭代传递给枚举,创建一个枚举对象:

enumerate_object = enumerate(items) # the enumerate object

我们可以从这个可迭代的项目中提取第一个项目,这样我们就可以在循环中使用next职能:

iteration = next(enumerate_object) # first iteration from enumerateprint(iteration)

我们看到我们得到了一个元组0,第一个索引,以及'a',第一项:

(0, 'a')

我们可以使用所谓的“序列解列“从这两个元组中提取元素:

index, item = iteration#   0,  'a' = (0, 'a') # essentially this.

当我们检查index,我们发现它引用了第一个索引,0,和item指的是第一项,'a'.

>>> print(index)0>>> print(item)a

结语

  • Python索引从零开始
  • 若要在迭代过程中从可迭代的对象中获取这些索引,请使用枚举函数。
  • 以惯用的方式使用枚举(连同元组解压缩)创建的代码更具可读性和可维护性:

所以这样做:

for index, item in enumerate(items, start=0):   # Python indexes start at zero
    print(index, item)


查看完整回答
反对 回复 2019-05-30
  • 3 回答
  • 0 关注
  • 735 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信