Оптимизировать - так
if a in { b, c, d }:
Таким образом все проверяемые значения помещаются в множество, в котором лукап делается за константное время (если повезёт, но в большинстве случаев - норм).
Уменьшить количество кода - примерно так же. Но к оптимизации это не имеет отношения. Например, здесь столько же кода, сколько в предыдущем варианте, но при большом размере списка это будет выполняться медленно, т.к. будут последовательно сравниваться все элементы:
if a in (b, c, d):
if a in [b, c, d]:
if a == b or a == c or a == d:
Можно ли это оптимизировать, перекинув a в одну сторону а b, c, d в другую?