несколько целей для операторов присваивания в Python? - PullRequest
0 голосов
/ 22 сентября 2018

Есть ли в Python способ использовать операторы присваивания для нескольких целей (операндов), например:

a, b, c += d

, когда d - что-то дорогое с точки зрения памяти и времени вычислений?
Еслинет, как Pythonic делает это и вычисляет d только один раз, не сохраняя его в новой переменной?

Ответы [ 4 ]

0 голосов
/ 22 сентября 2018
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
0 голосов
/ 22 сентября 2018

Вы можете сделать это так:

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
0 голосов
/ 22 сентября 2018

Я думаю, что это даст желаемый эффект, но я не уверен, что вы получите от этого.

a, b, c = (n+d for n in (a, b, c))
0 голосов
/ 22 сентября 2018

Вы можете попробовать это:

a, b, c = a+d, b+d, c+d
...