vs.
y = func(x)
result = [y, y*2, y*3]
The latter seems vastly superior to me. Author says > You might say, "I can just add y = func(x) before the list declaration and I don't need the walrus!", you can, but that's one extra, unnecessary line of code and at first glance - without knowing that func(x) is super slow - it might not be clear why the extra y variable needs to exist.
And I think that's stupid
Second example result = [y for x in data if (y := func(x))]
Author says alternative is result = [func(x) for x in data if func(x)]
I say it is
result = [func(x) for x in data]
result = [x for x in result if x] # filter out 0s