Как применить функцию к нескольким переменным

1

Мне нужно проверить несколько переменных и вызвать на них одну и ту же функцию

if isinstance(VarA,complex):
    VarA=SomeFunction(VarA)
if isinstance(VarB,complex):
    VarB=SomeFunction(VarB)
if isinstance(VarC,complex):
    VarC=SomeFunction(VarC)

Можно ли написать этот код короче/читабельнее?

Теги:
python-3.x
functional-programming

3 ответа

4
Лучший ответ

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

a, b, c = (f(x) if isinstance(x, complex) else x for x in [a, b, c])

Это становится более уродливым, когда имеется более трех переменных, поэтому, если вы нуждаетесь в большом количестве переменных, которые используются для выполнения одного и того же вычисления, вы должны подумать об использовании списков и циклов:

List = [1, 2, 3 + 1j, 4, 5 - 2j]

processed = [f(x) if isinstance(x, complex) else x for x in List]
  • 1
    Хорошее решение для небольшого количества предметов.
2

Одним из решений является использование словаря для хранения вашего переменного количества переменных.

Затем выполните итерацию словаря и измените значения, если ваше условие выполнено.

vars = {'A': VarA, 'B': VarB, 'C': VarC}

for k, v in vars.items():
    if isinstance(v, complex):
        vars[k] = SomeFunction(vars[k])
  • 1
    Я выбираю другой ответ, потому что у меня небольшое количество переменных, но ваш ответ тоже хорош.
0

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

varA,varB,varC = (SomeFunction(var) if isinstance(var,complex) else var for var in [varA,varB,varC])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню