Вы правы в своем предположении, что any
возвращает True
или False
на основании того факта, что условие соответствует для любого элемента в итерируемой.Но это не то, как вы извлекаете элемент, который удовлетворял условию
Из документов: https://docs.python.org/3/library/functions.html#any
любой (повторяемый)
Возвращает True, если какой-либо элемент повторяемого элементаправда.Если итерация пуста, верните False.
В вашем случае, поскольку условие выполнено, оператор print будет выполняться, как показано ниже.Но так как word
находится только в пределах области действия генератора внутри any
, вы получите ошибку NameError: name 'word' is not defined.
Также вам не следует называть вашу переменную all
, поскольку она будет затенять встроенную все
In [15]: all = ['azeri', 'english', 'japan', 'india', 'indonesia']
...: lg = 'from japan'
...: lgn = lg.split()
...: if any(word in lgn for word in all):
...: print('condition met')
...:
condition met
Если вы хотите найти список слов, удовлетворяющих условию, вы должны использовать цикл for, скажем, список-понимание
all_words = ['azeri', 'english', 'japan', 'india', 'indonesia']
lg = 'from japan'
lgn = lg.split()
#Find words which are present in lgn
res = [word for word in all_words if word in lgn]
print(res)
Вывод будет ['japan']