Я начинаю изучать Python и пишу небольшой скрипт со следующей логикой и могу понять причину вывода или результатов, которые я получаю. У меня есть следующий код:
test = ['aa01', 'zz02', '01']
for element in test:
print(f'{element}')
if 'aa' or 'zz' in element:
print('Condition met')
else:
print('Condition not met')
Я получаю следующий вывод:
aa01
Condition met
zz02
Condition met
01
Condition met
С помощью этой строки кода:
if 'aa' or 'zz' in element:
Я ожидаю, что каждый элемент в списке будет искать совпадение подстроки (либо «aa», либо «zz»), а затем печатать, если условие выполнено. Основываясь на выводе, я не понимаю, почему третий элемент соответствует этому условию, которое не имеет ни одной из подстрок.
Если я выполню следующий код:
'zz' in 'aa01'
False
и следующий код:
'zz' or 'aa' in 'aa'
'zz'
На данном этапе меня не интересует, как работает сопоставление подстрок, т. е. в «аа» нет «zz». Возвращается ли это, что «zz» не находится в «aa»?
Я также попробовал следующий код, который также не дал мне желаемого результата, ну, по крайней мере, того, что я ожидаю, исходя из моего понимания Python до сих пор.
test = ['aa01', 'zz02', '01']
for element in test:
print(f'{element}')
if 'aa' in element:
print('Condition met')
if 'zz' in element:
print('Condition met')
else:
print('Condition not met')
Это результат, который я получаю:
aa01
Condition met
Condition not met
zz02
Condition met
01
Condition not met
Итак, как aa01 выше показывает, что Условие выполнено, и в то же время показывает, что Условие не выполнено.
Я не могу объяснить поведение, которое я вижу. Хотелось бы, чтобы кто-нибудь объяснил мне это или указал на некоторую информацию об этом.
Большое спасибо за помощь.






Эта линия не делает то, что вы думаете.
Когда вы пишете if this in that, он проверяет, содержит ли thatthis. Если вы просто напишете if this:, то это просто проверка на истинность, которая всегда будет возвращать True для строк, за исключением '' пустой строки.
Итак, когда вы запускаете if this or that in those:, на самом деле вы спрашиваете «если это» и «если это в тех» в одной строке.
Чтобы заставить строку делать то, что вы ожидаете, она должна быть написана так:
if 'aa' in element or 'zz' in element:
... do something