Можно объединить это
x = 0
y = 1
z = 3
в одной переменной.
In [1]: xyz = (0,1,3,)
In [2]: mylist = []
Изменение наши условия как:
In [3]: if 0 in xyz:
...: mylist.append("c")
...: if 1 in xyz:
...: mylist.append("d")
...: if 2 in xyz:
...: mylist.append("e")
...: if 3 in xyz:
...: mylist.append("f")
Вывод:
In [21]: mylist
Out[21]: ['c', 'd', 'f']
Без dict попробуйте это решение:
x, y, z = 0, 1, 3
offset = ord('c')
[chr(i + offset) for i in (x,y,z)]
и дает:
['c', 'd', 'f']
, В то время как шаблон для тестирования нескольких значений
>>> 2 in {1, 2, 3}
True
>>> 5 in {1, 2, 3}
False
очень читаем и работает во многих ситуация, существует одна ловушка:
>>> 0 in {True, False}
True
, Но мы хотим иметь
>>> (0 is True) or (0 is False)
False
, Одно обобщение предыдущего выражения основано на ответе от ytpillai:
>>> any([0 is True, 0 is False])
False
, который может быть записан как [1 112]
>>> any(0 is item for item in (True, False))
False
, В то время как это выражение возвращает правильный результат, это не столь читаемо как первое выражение :-(