On Nov 18, 2019, at 13:14, Random832 <random...@fastmail.com> wrote: > > On Mon, Nov 18, 2019, at 13:35, Serhiy Storchaka wrote: >> 18.11.19 04:39, Daniel Zeng пише: >>> Syntax for tuple comprehension, something like: >>> (i, for i in range(10)) >> >> (**(i for i in range(10))) > > It'd be (*(i for i in range(10)),) but point taken. In fact, after thinking > about it some more, I'm not sure if there's any more efficient way to > implement it anyway, considering that there's no way for the loop that would > be generated to append to a tuple.
At the C API level, tuples are mutable, and this is safe to use as long as you’re sure no Python code has a reference to the tuple. So there’s no reason we couldn’t have a special TUPLE_APPEND op that’s only used in tuple comprehensions, the same way LIST_APPEND is used in list comprehensions. (In a comprehension you can be sure that no Python code has a reference to the object that you’re building until after you’ve finished building it.) Of course this is all CPython-specific; you’d have to think about how, say, PyPy could implement the feature before declaring that it’s definitely not a problem. But I _think_ it’s not a problem. _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/CUYA2DUIZR27WZUQRAWO2X3T44PONSNY/ Code of Conduct: http://python.org/psf/codeofconduct/