C++;for将嵌套语句循环到python < P>如何将下面的C++循环转换成循环的Python?< /P> for(i = xSize - 1; i >= 0 && ptr.points[i] > temp; i--){ doSomething; }

C++;for将嵌套语句循环到python < P>如何将下面的C++循环转换成循环的Python?< /P> for(i = xSize - 1; i >= 0 && ptr.points[i] > temp; i--){ doSomething; },python,c++,for-loop,Python,C++,For Loop,我有麻烦,因为和操作员。没有它,我知道它会像 for i in range(xSize - 1, 0, -1) 这是等效的吗 for i in range(xSize - 1, 0, -1): if ptr.points[i] > temp: doSomething Python本身不支持这种操作 然而,你的直觉是正确的。您可以按照您所说的那样编写,但正如@François Andrieux正确地指出的那样,您还应该提供一个break子句 另外,您还应该看看标准

我有麻烦,因为和操作员。没有它,我知道它会像

for i in range(xSize - 1, 0, -1)
这是等效的吗

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

Python本身不支持这种操作

然而,你的直觉是正确的。您可以按照您所说的那样编写,但正如@François Andrieux正确地指出的那样,您还应该提供一个
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()
从itertools导入takewhile,计数
对于takewhile中的i(λi:i>0且i温度,i=i-1):doSth()

<代码> > p>循环的C++流程大致为:

for(初始化;条件;递增/递减){
剂量测定法;
}
一旦条件计算为
false
,执行将中断循环。在您的示例中,条件是
i>=0&&ptr.points[i]>temp
,这意味着如果
i
的值为负值或
ptr.points[i]=0,您将中断循环;我——){
如果(ptr.点[i]>温度){
剂量测定法;
}
否则{
打破
}
}
这很容易翻译成python,如下所示:

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

(虽然你并不需要检查
i>=0

我认为这也可以作为一个while循环,而且直观,IMHO

i=xSize-1
while True:
    if ptr.points[i] > temp:
        doSomething 
    else:
        break
    i-=1

只要在条件变为false时中断循环:
for i in range(xSize-1,0,-1):如果i<0或ptr.points[i]谢谢,但为什么要使用否定?它有优势吗?它们应该是等价的。请参阅我发布的答案(没有否定)以获得更多解释。我不是Python方面的专家,但在我看来,Python版本的循环将在所有范围内迭代,并跳过那些与谓词一致的循环。C++循环结束时,发现第一个这样的值,所以即使未来的值不匹配,他们也将被“跳过”。是的,这是正确的。谢谢你的补充,我也完成了答案,包括你的观察。谢谢你的回复。在您使用的python if语句中,我认为这是一个拼写错误,对吗?@paul确实是一个拼写错误。修好了。还请注意,这与您在问题中发布的内容不同,因为您的版本不会跳出循环。