首页 > 解决方案 > “i for i”有什么作用,它是如何工作的?除了在列表中建立索引之外,它是否有用?

问题描述

当我在搜索如何在列表中查找项目的索引时,答案包括一些我无法弄清楚的代码。

具体来说:

[i for i, j in enumerate(['foo', 'bar', 'baz']) if j == 'bar']

我理解了大部分内容,但“ i for i”部分让我感到困惑。我对正常for循环非常熟悉,但我不明白这一点,有人可以解释一下吗?

标签: pythonlistfor-loop

解决方案


我喜欢将列表理解分解为正常的 for 循环,以帮助我理解它们在做什么(或在我自己的故障排除中)。

output = [i for i, j in enumerate(['foo', 'bar', 'baz']) if j == 'bar']

是相同的:

output = []
for i, j in enumerate(['foo', 'bar', 'baz']):
    if j == 'bar':
        output.append(i)

列表推导,尤其是大型推导,比传统的 for 循环运行得更快。


推荐阅读