In Perl, one can label loops for finer flow control. For example:
X: for my $x (@X) { Y: for my $y (@Y) { for my $z (@Z) { next X if test1($x, $y, $z); next Y if test2($x, $y, $z); frobnicate($x, $y, $z); } glortz($x, $y); } splat($x); } What's considered "best practice" in the Python world for this sort of situation? The only approach I can think of requires setting up indicator variables that must be set and tested individually; e.g. for x in X: next_X = False for y in Y: next_Y = False for z in Z: if test1(x, y, z): next_X = True break if test2(x, y, z): next_Y = True break frobnicate(x, y, z) if next_X: break if next_Y: continue glortz(x, y) if next_X: continue splat(x) Whereas I find the Perl version reasonably readable, the Python one I find nearly incomprehensible. In fact, I'm not even sure that the Python version faithfully replicates what the Perl one is doing! Is there a better approach? TIA! kynn -- http://mail.python.org/mailman/listinfo/python-list