内置函数any()有什么作用?

Con*_*are -1 python syntax if-statement any

我做了一些谷歌搜索如何检查字符串是否有列表中的任何元素,我发现这段代码有效:

if any(i in string for i in list):

我知道这有效,但我不知道为什么.你能分享一些见解吗?

aba*_*ert 6

作为文件any说:

True如果iterable的任何元素为true ,则返回.如果iterable为空,则返回False.相当于:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False
Run Code Online (Sandbox Code Playgroud)

所以,这相当于:

for element in (i in string for i in list):
    if element:
        return True
return False
Run Code Online (Sandbox Code Playgroud)

......本身实际上相当于:

for i in list:
    element = i in string
    if element:
        return True
return False
Run Code Online (Sandbox Code Playgroud)

如果你不理解最后一部分,首先阅读关于列表推导的教程部分,然后跳到迭代器,生成器和生成器表达式.

如果你想真正打破它,你可以这样做:

elements = []
for i in list:
    elements.append(i in string)
for element in elements:
    if element:
        return True
return False
Run Code Online (Sandbox Code Playgroud)

这仍然不完全相同,因为生成器表达式构建一个生成器而不是列表,但它应该足以让你继续阅读教程部分.


但与此同时,拥有any和理解等等的观点是,你几乎可以将它们视为简单的英语:

if any(i in string for i in list): # Python

if any of the i's is in the string, for each i in the list: # pseudo-English
Run Code Online (Sandbox Code Playgroud)