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确实是一个拼写错误。修好了。还请注意,这与您在问题中发布的内容不同,因为您的版本不会跳出循环。