C ++ for python的循环嵌套语句

时间:2018-11-19 20:35:17

标签: python c++ for-loop

我如何将以下C ++ for循环转换为python for循环?

for(i = xSize - 1; i >= 0 && ptr.points[i] > temp; i--){
    doSomething;
}

由于and运算符,我遇到了麻烦。没有它,我知道会是

for i in range(xSize - 1, 0, -1)

这等效吗?

for i in range(xSize - 1, 0, -1):
    if ptr.points[i] > temp:
        doSomething

3 个答案:

答案 0 :(得分:0)

Python本身不支持这种操作。

但是,您的直觉是正确的。您可以按照您的陈述进行书写,但正如@FrançoisAndrieux正确陈述的那样,您还应该提供一个break子句。

此外,您还应该看看标准库提供的itertools模块。它提供了大量功能来处理有效的循环。

from itertools import takewhile, count 
for i in takewhile(lambda i:i > 0 and i<xSize -1 and ptr.Points[i] > temp, i = i-1): doSth()

答案 1 :(得分:0)

C ++ for循环的流程大致如下:

for ( initialize; condition; increment/decrement ) {
   doSomething;
}

条件评估为false后,执行将跳出循环。在您的示例中,条件为i >= 0 && ptr.points[i] > temp,这意味着如果i的值为负或ptr.points[i] <= temp,您将跳出循环。

因此,您可以等效地写:

for(int i = xSize - 1; i >= 0; i--){
    if(ptr.points[i] > temp) {
        doSomething;
    }
    else {
        break;
    }
}

其中,很容易将python转换为:

for i in range(xSize-1, 0, -1): 
    if i >= 0 and ptr.points[i] > temp: 
        doSomething
    else:
        break

(尽管您确实不需要i >= 0检查)

答案 2 :(得分:0)

恕我直言,恕我直言,这应该是一会儿循环吧

jq-1.6 -n  '[0,1,2,3] | (.[] |= if . == 2 then empty else . end)'
[
  0,
  1,
  3,
  null
]