我遇到的一个常见问题如下:
在一个循环(通常是for循环)中,一些约束 - 并且必须在开始时检查。现在有时如果条件满足,循环中的代码应该运行到当前迭代步骤的末尾,然后退出。
通常我会以某种方式这样做
a = 0;
quit = 0;
for i = 1:1:11
if (a == 5) % Condition to be checked *before* the calculation
quit = 1; % Stop loop after this iteration
end
a = a + 1; % Calculation
...
if (quit == 1)
break;
end
end
但是在紧密的循环中,检查if (quit == 1)
的额外条件可能会导致相关的减速。还需要引入一个额外的变量,所以我想知道这通常是怎么做的,或者是否有更好的方法来做...
答案 0 :(得分:0)
为什么不这样做。
for i = 1:1:11
if (a == 5) % Condition to be checked *before* the calculation
func() --> do all the calculations
break; % Stop loop after this iteration
else
func() --> do all calculations
end
end
function func()
a = a+1
//all other calculations
end
答案 1 :(得分:0)
通常您可以检测何时停止迭代。但是,如果我理解你的问题,你只能检测它应该是最后一次迭代的时间。你可以试试这个:
a = 0;
i = 1;
while (i<=11)
if (a == 5)
i = 12; % Make sure this is the last iteration
else
i = i + 1;
end
a = a + 1;
end
答案 2 :(得分:0)
怎么样:
for i = 1:11
quit = (a==5); % Condition to be checked *before* the calculation
a = a+1
if quit
break; % Stop loop after this iteration
end
end
有什么不同吗?
答案 3 :(得分:0)
results = [
x+y for x, _, y in zip(*(int(x) for x in map(lambda x: x.split(','), fn))
]