【问题标题】:Understanding pythons enumerate理解python枚举
【发布时间】:2015-04-14 05:31:33
【问题描述】:

在转向 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 函数但我不确定如何使用 enumerate 编写类似的代码?我想问的另一个问题是,当使用 enumerate 时,它​​是否以相同的方式有效地运行,还是并行进行比较?

在我的示例代码中:

if myList[i] == something:

使用 enumerate 是同时检查所有值还是仍然一一循环?

对不起,如果这对论坛来说太基础了,只是想把我的脑袋绕过去,这样我就可以在学习的同时钻“pythonic”代码。

【问题讨论】:

  • 你签出this thread了吗?
  • 请注意,现在即使在 C++ 中,您也不需要在迭代容器时手动计算索引。

标签: python enumerate


【解决方案1】:

一般来说,这就足够了:

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

如果您需要索引:

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

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

【讨论】:

  • 谢谢你正是我要找的,也感谢下面的海报花时间,
【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-19
    • 2012-06-02
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多