【问题标题】:C++ "for" loop condition in pythonpython中的C++“for”循环条件
【发布时间】:2020-10-20 09:37:07
【问题描述】:

有没有一种单行方法可以将这个“for”循环从 C++ 转换为 python?

for(int i = 0; i < = 10 && i != 6; i++)

我的意思是在 C++ 中我们有:

for(initial_value; condition(s); step)

我正在寻找 Python 中的模拟版本,我们可以在其中施加一个或多个条件。

【问题讨论】:

  • 不清楚你想要什么。特别是可以简化C++代码:for(int i = 0; i!= 6; i++)
  • 除非i 在循环内被修改?
  • @mch 我的错,你是对的
  • Python 的范围函数也使用半开范围,就像 C++ 循环的习惯一样,@mch。
  • @UlrichEckhardt 你是对的,所以是for i in range(0, 6):

标签: python c++ loops for-loop


【解决方案1】:

在 C++ 中类似循环

for (a; b; c)
   d;

等价于

{
    a;
    while (b)
    {
        d;
        c;
    }
}

如果您首先将 for 循环转换为相应的 while 循环,那么您可以将该 while 循环转换为 Python。

【讨论】:

    【解决方案2】:

    可能最简单的 Pythonic 发音是

    for i in range(11):
        if i == 6:
            continue
        ... stuff happens ...
    

    【讨论】:

    【解决方案3】:

    如果你想表达“对 0 到 10 的数字做一些事情,除了 6”,正确的 C++ 代码不能是简单的 for 循环:

    for (int i = 0; i <= 10; i++)
    {
        if (i != 6)
        {
            ... // do the stuff
        }
    }
    

    您可以将其逐字翻译成 Python(请参阅 answer by tripleee)或制作真正的单行字,如下所示:

    创建一个你想要运行的数字列表:[x for x in range(11) if x != 6]。然后对其进行迭代:

    for i in [x for x in range(11) if x != 6]:
        ... # do the stuff
    

    从代码可读性的角度来看,ifcontinue 的解决方案可能比这个更好。

    【讨论】:

    • 好吧,用 C++ 试试,你会看到我的朋友 :) 但是感谢你在 Python 方面帮助我!
    猜你喜欢
    • 2019-06-04
    • 1970-01-01
    • 2022-01-01
    • 2013-03-09
    • 1970-01-01
    • 2022-10-20
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多