【问题标题】:Find item index in list在列表中查找项目索引
【发布时间】:2016-01-25 18:57:35
【问题描述】:

这是一个非常简单的问题,但我似乎无法理解为什么我没有得到它。

def listindex():
    li = ['a', 'e', 'a', 'd', 'b', 'a', 'e']
    for x in li:
        if x == 'a':
            print(li.index(x))

结果:

0
0
0

预期结果:

0
2
5

虽然它遍历所有项目我只得到第一个项目索引,这是为什么呢?也建议,即使它很简单。

【问题讨论】:

  • RTFM - "s.index(x) x 在 s 中第一次出现的索引"
  • @ilaunchpad 不要太担心网点。重要的是学习。干杯。
  • ...因为通过阅读现有文档或previous questions 或只是help(list.index) 可以轻松回答?
  • @jonrsharpe 很抱歉,不是每个人都能理解文档中的所有内容。如果每个人都只关注文档,那么这个地方只会为火箭科学家解决问题。
  • 这不是一个复杂的边缘情况,或者这里的文档甚至有点不清楚。 SO 并不适用于所有问题,我们期待a fair bit of research before asking。也许您阅读了文档但不理解它 - 没关系,但是然后提及并具体说明您无法理解的内容。你甚至承认这不是一个好问题在问题中 - “这是一个非常简单的问题......即使它很简单也建议。”请采取@ 987654324@ 并阅读How to Ask

标签: python list loops indexing


【解决方案1】:

index 仅返回第一个元素的索引。来自docs

返回列表中第一个值为 x 的项目的索引。如果没有这样的项目是错误的。

请改用enumerate。当您使用 enumerate 进行迭代时,您可以在循环中访问元素及其索引:

>>> li = ['a', 'e', 'a', 'd', 'b', 'a', 'e']
>>> for i,element in enumerate(li):
...     if element == 'a':
...        print(i)
... 
0
2
5

【讨论】:

  • @maccinza 我想保留iindex,因为它一直被推荐。谢谢剩下的。祝你好运
【解决方案2】:

使用关键字 enumerate() 这将生成一个从 0 到 N 的计数器。

for i, x in enumerate(li):

所以i 将包含li 的索引。

【讨论】:

    【解决方案3】:
    li = ['a', 'e', 'a', 'd', 'b', 'a', 'e']
    

    使用列表理解:

    [i for i, x in enumerate(li) if x=='a']
    

    输出:[0, 2, 5]

    【讨论】:

      猜你喜欢
      • 2014-10-13
      • 2023-02-11
      • 2010-09-15
      • 2013-01-07
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 2012-01-10
      • 2018-07-31
      相关资源
      最近更新 更多