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

Оптимицация в пайтон

ALEXandr Kvo4in Ученик (22), открыт 6 часов назад
Часто встречаюсь с ситуациями по типу:
if a == b or a == c or a == d:
Можно ли это оптимизировать, перекинув a в одну сторону а b, c, d в другую?
Проголосовало 14 чел
Варианты ответов
6
8
Комментарии
твизз унитазЗнаток (263) 6 часов назад
Random (/system32)
Delete
ALEXandr Kvo4in Ученик (22) твизз унитаз, sudo rm -rf/ лудше поможет
АндрейВысший разум (482586) 6 часов назад
Да, можно:
 if a in (b, c, d): 
Jurijus ZaksasИскусственный Интеллект (472177) 6 часов назад
Оптимизация - это уменьшение времени работы, уменьшение использования ресурсов, упрощение алгоритма. А твое "перекидывание" - это ни разу не оптимизация.
ПапаВысший разум (154175) 6 часов назад
Оптимизировать - так
 if a in { b, c, d }: 
Таким образом все проверяемые значения помещаются в множество, в котором лукап делается за константное время (если повезёт, но в большинстве случаев - норм).

Уменьшить количество кода - примерно так же. Но к оптимизации это не имеет отношения. Например, здесь столько же кода, сколько в предыдущем варианте, но при большом размере списка это будет выполняться медленно, т.к. будут последовательно сравниваться все элементы:
 if a in (b, c, d): 
 if a in [b, c, d]: 
ALEXandr Kvo4inУченик (22) 6 часов назад
Всем спасибо
꧁Tester꧂ ︎Просветленный (21397) 4 часа назад
Чтобы именно оптимизировать, нужно делать первым самое важное условие.
И только в зависимости от его выполнения проверять остальные.