了解蟒蛇枚举



在转向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"代码。

一般来说,这就足够了:

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

如果您需要索引:

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

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

在你的例子中你根本不需要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

最新更新