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