Есть ли в Python способ использовать операторы присваивания для нескольких целей (операндов), например:
a, b, c += d
, когда d - что-то дорогое с точки зрения памяти и времени вычислений? Еслинет, как Pythonic делает это и вычисляет d только один раз, не сохраняя его в новой переменной?
d
a = 1 b = 2 c = 3 z = 1 [a, b, c] = [i+z for i in [a, b, c]] print(a, b, c)
Выход
2 3 4
Вы можете сделать это так:
a, b, c = 0, 0, 0 d = 8 a, b, c = map(lambda x: x+d, [a, b, c]) print(a, b, c) # 8, 8, 8
Я думаю, что это даст желаемый эффект, но я не уверен, что вы получите от этого.
a, b, c = (n+d for n in (a, b, c))
Вы можете попробовать это:
a, b, c = a+d, b+d, c+d