Python 如何获取导致any()返回True的值?

Python 如何获取导致any()返回True的值?,python,python-3.x,list,any,Python,Python 3.x,List,Any,调用any()函数时,它只返回True或False。如果它返回True,如何获取导致它返回True的元素 all=['azeri','english','japan','india','indonesia'] lg=‘来自日本’ lgn=lg.split() 如果有(lgn中的单词表示所有单词): 打印(word) 在这种情况下,我想获得单词japan。正如所写的,此代码只返回name错误:名称“word”未定义。您的假设是正确的,any返回True或False,这是基于条件匹配iterabl

调用
any()
函数时,它只返回
True
False
。如果它返回
True
,如何获取导致它返回
True
的元素

all=['azeri','english','japan','india','indonesia']
lg=‘来自日本’
lgn=lg.split()
如果有(lgn中的单词表示所有单词):
打印(word)

在这种情况下,我想获得单词
japan
。正如所写的,此代码只返回
name错误:名称“word”未定义。

您的假设是正确的,
any
返回
True
False
,这是基于条件匹配iterable中的任何元素这一事实。但这不是提取满足条件的元素的方式

从文档中:

任意(可编辑)
如果iterable的任何元素为True,则返回True。如果iterable为空,则返回False

在您的情况下,由于满足条件,print语句将按如下方式执行。但是由于
word
仅在
any
中的生成器范围内,因此您会得到错误
NameError:name'word'未定义。

此外,您不应该将变量命名为
all
,因为它将隐藏内置项

如果你想找到满足条件的单词列表,你应该在列表理解中使用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']

根据您的要求,我认为您应该只使用
过滤器,而不是任何过滤器。下面的代码应该可以工作

all = ['azeri', 'english', 'japan', 'india', 'indonesia']
lg = 'from japan'
lgn = lg.split()

print(list(filter(lambda word: word in lgn, all))) 

注意:使用
all
命名变量会隐藏一个内置函数。为什么不直接使用:
用于lgn中的word:print(word)如果word在其他所有函数中都没有
?在您的示例中,
word
仅在
any
调用中定义,因此您无法访问它。这是一个很好的解决方案,但我希望输出一个
string
。所以我会为lgn中的单词编写一个代码,
:if-word-in-all_-words:print(word)else:None
就像@0x2bad saidOkay所说的,你可以在for循环@ArmandDwi中打印
res
的元素
all = ['azeri', 'english', 'japan', 'india', 'indonesia']
lg = 'from japan'
lgn = lg.split()

print(list(filter(lambda word: word in lgn, all)))