Вы ищете any()
:
if any('apple' in code for code in CODES):
...
В сочетании с простым выражением генератора это делает задачу. Выражение генератора принимает каждый кортеж и дает True
, если оно содержит 'apple'
. any()
затем возвращает True
, когда первый элемент, который он запрашивает, возвращает True
(в противном случае False
). Следовательно, это делает то, что вы хотите. Он также хорошо читается - , если какой-либо из кортежей содержит 'apple'
.
Если вы делаете это много раз и нуждаетесь в производительности, то, возможно, стоит сделать набор всех значений, позволяющих сделать это очень быстро:
cache = set(itertools.chain.from_iterable(CODES)))
Естественно, что построение этого будет медленным и использовать память, поэтому было бы неплохо, если вам не понадобится много производительности и будет выполнять много проверок членства.