[Peter O'Connor]
>> ...
>> We could use given for both the in-loop variable update and the variable
>> initialization:
>>    smooth_signal =  [average given average=(1-decay)*average + decay*x
>>                                 for x in signal] given average=0.

[Steven D'Aprano <st...@pearwood.info>]
> I don't think that will work under Nick's proposal, as Nick does not
> want assignments inside the comprehension to be local to the surrounding
> scope. (Nick, please correct me if I'm wrong.)

Nick appears to have moved on from "given" to more-general augmented
assignment expressions.  See PEP 577, but note that it's still a
work-in-progress:

    https://github.com/python/peps/pull/665


Under that PEP,

    average = 0
    smooth_signal =  [(average := (1-decay)*average + decay*x)
                                 for x in signal]

Or, for the running sums example:

    total = 0
    sums = [(total += x) for x in data]

I'm not entirely clear on whether the "extra" parens are needed, so
added 'em anyway to make grouping clear.
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to