[Python-Dev] Tricky way of of creating a generator via a comprehension expression (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Sat Nov 25 00:39:33 EST 2017


On 25 November 2017 at 15:27, Nathaniel Smith <njs at pobox.com> wrote:

On Fri, Nov 24, 2017 at 9:04 PM, Nick Coghlan <ncoghlan at gmail.com> wrote:

def example(): comp1 = yield from [(yield x) for x in ('1st', '2nd')] comp2 = yield from [(yield x) for x in ('3rd', '4th')] return comp1, comp2 Isn't this a really confusing way of writing def example(): return [(yield '1st'), (yield '2nd')], [(yield '3rd'), (yield '4th')]

A real use case wouldn't be iterating over hardcoded tuples in the comprehensions, it would be something more like:

def example(iterable1, iterable2):
    comp1 = yield from [(yield x) for x in iterable1]
    comp2 = yield from [(yield x) for x in iterable2]
    return comp1, comp2

Defining an interesting for loop isn't the point of the example though

Cheers, Nick.

-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia



More information about the Python-Dev mailing list