Con*_*are -1 python syntax if-statement any
我做了一些谷歌搜索如何检查字符串是否有列表中的任何元素,我发现这段代码有效:
if any(i in string for i in list):
我知道这有效,但我不知道为什么.你能分享一些见解吗?
作为文件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)