Hi all, Often I have typed something like
for x in range(100) if is_prime(x): # do things with x to find that this does not work, instead resorting to: for x in range(100): if is_prime(x): # do things with x or for x in range(100): if not is_prime(x): continue # do things with x Other solutions to another case of this 'problem' are discussed has been discussed on StackOverflow ( http://stackoverflow.com/questions/6981717/pythonic-way-to-combine-for-loop-and-if-statement) where it is suggested one uses a generator expression before the loop. None of these solutions seem very Pythonic to me. I appreciate there is a cost associated with changing the language syntax, and I do not understand all the finer details of the inner workings involved with the Python language development, however in my limited understanding in it would be: - fully backwards compatible, - require one to change "expression_list" to "or_test [comp_iter]" in the syntax of the for statement (if I got it right). - it would mean there is a Pythonic solution to a current 'problem' that does not have one. A few problems I foresee: - One wants for loops to bleed their target_list (that is the point normally), so this is different from generators, - This allows for nesting of generators, like in a generator expression which might be hard to implement? Note that this has been suggested before at least once ( https://mail.python.org/pipermail/python-dev/2007-November/075257.html), and that thread itself suggests it has been suggested before and shutdown by Guido (though no source is given for this). All the best, Henk-Jaap Wagenaar
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/