如何获取导致 any() 变为 return True 的值?
How do I obtain the value that caused any() to return True?
当我调用 any()
函数时,它 return 只有 True
或 False
。如果它returns True
,我如何获得导致它return True
的元素?
all = ['azeri', 'english', 'japan', 'india', 'indonesia']
lg = 'from japan'
lgn = lg.split()
if any(word in lgn for word in all):
print(word)
在这种情况下,我想获取单词japan
。这段代码,如所写,只是 returns NameError: name 'word' is not defined.
你的假设是正确的 any
returns True
或 False
基于条件匹配可迭代中的任何元素这一事实。但这不是您提取满足条件的元素的方式
来自文档:https://docs.python.org/3/library/functions.html#any
any(iterable)
Return True if any element of the iterable is true. If the iterable is empty, return False.
在你的例子中,由于满足条件,打印语句将执行如下。但是由于 word
只在 any
内部的生成器范围内,你得到错误 NameError: name 'word' is not defined.
另外你不应该命名你的变量 all
因为它会影响内置
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
如果你想找到满足条件的单词列表,你应该使用a for-loop in say a list-comprehension
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']
我认为根据您的要求,您应该只使用 filter
而不是任何一个。下面的代码应该可以工作。
all = ['azeri', 'english', 'japan', 'india', 'indonesia']
lg = 'from japan'
lgn = lg.split()
print(list(filter(lambda word: word in lgn, all)))
当我调用 any()
函数时,它 return 只有 True
或 False
。如果它returns True
,我如何获得导致它return True
的元素?
all = ['azeri', 'english', 'japan', 'india', 'indonesia']
lg = 'from japan'
lgn = lg.split()
if any(word in lgn for word in all):
print(word)
在这种情况下,我想获取单词japan
。这段代码,如所写,只是 returns NameError: name 'word' is not defined.
你的假设是正确的 any
returns True
或 False
基于条件匹配可迭代中的任何元素这一事实。但这不是您提取满足条件的元素的方式
来自文档:https://docs.python.org/3/library/functions.html#any
any(iterable)
Return True if any element of the iterable is true. If the iterable is empty, return False.
在你的例子中,由于满足条件,打印语句将执行如下。但是由于 word
只在 any
内部的生成器范围内,你得到错误 NameError: name 'word' is not defined.
另外你不应该命名你的变量 all
因为它会影响内置
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
如果你想找到满足条件的单词列表,你应该使用a for-loop in say a list-comprehension
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']
我认为根据您的要求,您应该只使用 filter
而不是任何一个。下面的代码应该可以工作。
all = ['azeri', 'english', 'japan', 'india', 'indonesia']
lg = 'from japan'
lgn = lg.split()
print(list(filter(lambda word: word in lgn, all)))