Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сократить код if else?

Арсений Пресняков Знаток (398), открыт 3 недели назад
Мне не очень хочется писать вот это 4 раза, помогите как сократить?
 if a == 0: a = zero() 
elif a == 1: a = one()
elif a == 2: a = two()
elif a == 3: a = three()
elif a == 4: a = four()
и т.д.
7 ответов
Кира Курседова Просветленный (48369) 3 недели назад
Ну можно через switch сделать. Но сильно не сократится
робот д24 Просветленный (24415) 3 недели назад
Можно сделать через map: ключ число, значение функция
Сонная хрень Искусственный Интеллект (360658) 3 недели назад
Да особо никак, можно через case, но будет не короче, просто "правильнее".
kaiu Высший разум (120004) 3 недели назад
:) а если у тебя миллион чисел, то будет миллион функций?
Андрей Высший разум (477698) 3 недели назад
 t = {0: zero, 1: one, 2: two} # и т.д. - все варианты.
if a in t: a = t[a]()
Рустам Абдрашитов Мудрец (15149) 3 недели назад
Есть несколько способов сократить этот код:

1. Через словарь (самый чистый способ):
```python
actions = {
0: zero,
1: one,
2: two,
3: three,
4: four
}
a = actions[a]()
```

2. Через список функций:
```python
functions = [zero, one, two, three, four]
a = functions[a]()
```

3. Через match/case (Python 3.10+):
```python
match a:
case 0: a = zero()
case 1: a = one()
case 2: a = two()
case 3: a = three()
case 4: a = four()
```

Словарь или список - самые компактные и читаемые варианты. Словарь лучше использовать, если значения не последовательные, список - если последовательные.
Похожие вопросы