[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/