理解蟒蛇枚举

时间:2015-04-14 05:31:33

标签: python 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中的枚举函数,我认为我应该使用但我不知道如何使用枚举来编写类似的代码呢?我想问的另一个问题是,当使用枚举时它是否有效地以相同的方式运行还是并行进行比较?

在我的示例代码中:

if myList[i] == something:

使用枚举将同时检查所有值或仍然逐个循环?

很抱歉,如果这对论坛来说太基础了,只是试着把它包裹起来,这样我就可以在学习的同时钻“pythonic”代码。

2 个答案:

答案 0 :(得分:2)

您的示例中根本不需要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

答案 1 :(得分:2)

一般来说,这就足够了:

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

如果您需要指数:

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

并没有做任何事情。它基本上抽象了你在C ++中手工完成的所有计数内容,但它几乎完全相同(仅在幕后,所以你不必担心它)。

相关问题