2017-02-23 5:37 GMT-08:00 Henk-Jaap Wagenaar <wagenaarhenkj...@gmail.com>: > > 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? > I think it might also be difficult to parse. Python currently supports this syntax:
In [8]: for x in [1, 2] if True else [1, 2, 3]: ...: print(x) ...: 1 2 I'm not sure the parser could distinguish this structure from the one you propose (which would have a very different meaning) without making it significantly more complicated. Changes that make the parser more complicated than LL(1) have been consistently rejected in the past; see https://www.python.org/dev/peps/pep-3099/. > > 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/ _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/