Я знаю, что это довольно глупый вопрос, и на подобные уже есть ответы, но они не совсем подходят, так что... Как я могу эффективно выполнять одну и ту же операцию с несколькими переменными, «сохраняя» отдельные переменные? пример:
a = 3
b = 4
c = 5
a,b,c *= 2 #(obviously this does not work)
print(a,b,c)
В этом сценарии я хочу получить результат 6, 8, 10. Очень важно, чтобы я все еще мог использовать измененные переменные.
Большое спасибо за ваши ответы!
потому что в файле, который уже превышает 3000 строк, становится довольно грязно писать одну и ту же команду десять раз. И тоже достаточно неэффективно.






Возможно, вы захотите изучить функцию карты Python. Следующая ссылка может быть полезной: https://www.w3schools.com/python/ref_func_map.asp
Map здесь ваш друг, но вам также нужно использовать «неявную распаковку кортежа»:
>>> a = 3
>>> b = 4
>>> c = 5
>>> d, e, f = map(lambda x: x * 2, [a, b, c])
>>> d
6
>>> e
8
>>> f
10
Таким образом, вы можете вернуть измененные значения без изменения исходных значений.
Вы можете использовать лямбда-функцию numpy или python в сочетании с картой, чтобы сделать то же самое.
Использование numpy:
In [17]: import numpy as np
In [18]: a = 3
...: b = 4
...: c = 5
...:
In [19]: a,b,c = np.multiply([a, b, c], 2)
In [20]: a
Out[20]: 6
In [21]: b
Out[21]: 8
In [22]: c
Out[22]: 10
Использование лямбды:
In [23]: a, b, c = list(map(lambda x: x*2, [a, b, c]))
In [24]: a
Out[24]: 12
In [25]: b
Out[25]: 16
In [26]: c
Out[26]: 20
Вы можете хранить их в контейнере, а затем использовать map для применения одной функции к каждому элементу контейнера
Например со списком:
def function_to_apply(element):
return element*2
# Define variables and store them in a container
a,b,c = 1,2,3
container = (a,b,c)
# Apply the function on every element with map
container = tuple(map(function_to_apply, container))
a,b,c = container
Это также можно сделать с помощью лямбда-функции, чтобы каждый раз не определять новую функцию
# Define variables and store them in a container
a,b,c = 1,2,3
container = (a,b,c)
# Apply the function on every element with map
container = tuple(map(lambda x: x*2, container))
a,b,c = container
Если у вас действительно большой набор переменных, и вы хотите получить их автоматически, не вводя каждую из них, как в a,b,c = container, вы можете использовать диктовать для их хранения с именами или функцию исполнитель для их динамического назначения.map документация: https://docs.python.org/3/library/functions.html#maplambda документация: https://docs.python.org/3/reference/expressions.html#grammar-token-lambda-expr
Вы можете использовать следующее выражение генератора:
a, b, c = 3, 4, 5
a, b, c = (2 * i for i in (a, b, c))
print(a, b, c)
# 6 8 10
Вы можете использовать карту, чтобы применить функцию к каждому элементу списка с лямбда-функцией для выполнения вашей операции. Затем используйте распаковку списка, чтобы перезаписать значения в исходных переменных.
a = 1
b = 2
c = 3
a,b,c = list(map(lambda x: x*2, [a,b,c]))
print(a,b,c)
# prints: (2, 4, 6)
map возвращает генератор, поэтому нам нужно явно создать список для распаковки.
небольшое объяснение кода поможет вашему ответу выделиться!
Любая конкретная причина, по которой вы не можете сделать это вручную? то есть
a *= 2и т. д.