了解 python 枚举

Understanding pythons enumerate

在转到 python 之前,我开始自学一些 C++,我习惯于编写诸如

之类的循环
   for( int i = 0; i < 20; i++ )
   {
       cout << "value of i: " << i << endl;
   }

搬到 python 我经常发现自己使用这样的东西。

i = 0
while i < len(myList):
   if myList[i] == something:
       do stuff
   i = i + 1 

我读到这根本不是 "pythonic",实际上我发现自己在需要迭代的时候经常使用这种类型的代码,我在 Python 中找到了枚举函数我认为我应该使用但我不确定如何使用枚举来编写类似的代码?我想问的另一个问题是,在使用 enumerate 时,它​​是以相同的方式有效运行还是并行比较?

在我的示例代码中:

if myList[i] == something:

对于枚举,这会同时检查所有值还是仍然一一循环?

抱歉,如果这对论坛来说太基础了,我只是想围绕它,这样我就可以在学习的同时练习 "pythonic" 代码。

您的示例中根本不需要 enumerate()

这样看:您在此代码中使用 i 做什么?

i = 0
while i < len(myList):
   if myList[i] == something:
       do stuff
   i = i + 1 

您只需要它来访问 myList 的个别成员,对吗?嗯,这是 Python 自动为您做的事情:

for item in myList:
    if item == something:
        do stuff

一般来说,这就足够了:

for item in myList:
    if item == something:
        doStuff(item)

如果您需要索引:

for index, item in enumerate(myList):
    if item == something:
        doStuff(index, item)

它不并行执行任何操作。它基本上抽象掉了你在 C++ 中手工做的所有计数工作,但它做的事情几乎完全相同(只是在幕后,所以你不必担心)。