在python中跟踪索引的正确方法是什么?

Joh*_*ohn 11 python lookup indexing

现在我正在循环跟踪我的索引

index = 0
for entry in longList:
    if entry == 'foo':
        print index
    index += 1
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

Bil*_*nch 19

for index, entry in enumerate(longList):
    if entry == 'foo':
        print index
Run Code Online (Sandbox Code Playgroud)


Chi*_*chi 10

使用enumerate()内置功能.

for index, entry in enumerate(longList):
    if entry == 'foo':
        print index
Run Code Online (Sandbox Code Playgroud)

但是,在您的具体情况下,您可以这样做 index = longList.index("foo")

编辑:如果你想在纯Python中尽可能快地找到多个匹配的索引,下面的代码应该可以解决这个问题:

indices = tuple(index for index, element in enumerate(longList) if element=='foo')
Run Code Online (Sandbox Code Playgroud)


ste*_*ert 6

我喜欢列表理解:)

[index for (index,entry) in enumerate(longList) if entry == 'foo']
Run Code Online (Sandbox Code Playgroud)


Sam*_*ing 5

是的,最好的方法是这样做:

longList.index('foo')
Run Code Online (Sandbox Code Playgroud)

  • 如果我们变得特别,它将不会发现重复. (8认同)
  • 是的,但如果我有几个条目匹配'foo'?然后不会执行多次搜索,从而减慢一切的速度? (3认同)
  • 我这样做但是当我在数千个条目中运行它时,它越来越慢,我进入列表的深度越来越慢.这就是为什么我正在使用我现在使用的循环. (2认同)
  • @johnthexiii:你只调用一次`.index()`.它肯定比你自己编写的任何Python代码都快,因为它是一个C函数. (2认同)