[Python]:你什么时候会使用 `any(x)` 函数?
[Python]: When would you use the `any(x)` function?
当我遇到一个我不知道的内置函数时,我正在阅读 3.4 的 Python 手册。函数是 any(x)
。
Python手册说这个函数"Return True
if any element of the iterable is true. If the iterable is empty, return False."
他们还编写了与此功能等效的代码。
def any(iterable):
for element in iterable:
if element:
return True
return False
这个功能有什么用?
您可以使用它来避免多个类似的情况,例如。
要检查字符串是否包含子字符串列表,您可以这样做:
str = 'Your cat is hungry.'
if 'cat' in str:
print 'Feed it!'
elif 'dog' in str:
print 'Feed it!'
elif 'hamster' in str:
print 'Feed it!'
...或者您可以这样做:
str = 'Your cat is hungry.'
pets = ['cat', 'dog', 'hamster']
if any(animal in str for animal in pets):
print 'Feed it!'
更新:if element: return True
.
你是对的 - 如果 iterable 中的一个元素有一个值,它就是 True
。在 Python 中,基本上如果变量有一个值,它就是 True
- 显然,只要该值不是 False
。 运行那个例子,看看值和条件,也许它比解释更有帮助:
x = ' '
y = ''
z = False
if x:
print 'x is True!'
else:
print 'x is False!'
if x == True:
print 'x is True!'
else:
print 'x is False!'
if y:
print 'y is True!'
else:
print 'y is False!'
if z:
print 'z is True!'
else:
print 'z is False!'
现在回到 any()
:它接受任何可迭代对象(如列表)作为参数 - 如果该可迭代对象的 any 值为 True
(因此得名), any()
returns True
.
还有一个叫做 all()
的函数 - 它类似于 any()
,但只有 returns True if all values of the iterable是真的:
print any([1, 2, False])
print all([1, 2, False])
真假
之前在@Burhan Khalid 的评论中提到过,但是关于什么被认为是 False
的官方文档也应该在这里提到:
如果你喜欢物理,python中的任何功能就像电路中开关的并联连接。
如果任何一个开关打开,(if element
) 电路将完成,它将点亮串联连接的灯泡。
让我们将灯泡并联连接如图所示作为电路和
灯泡作为指示灯(任何结果)
对于一个实例,如果你有一个 True 和 False 的逻辑列表,
logical_list = [False, False, False, False]
logical_list_1 = [True, False, False, False]
any(logical_list)
False ## because no circuit is on(True) all are off(False)
any(logical_list_1)
True ## because one circuit is on(True) remaining three are off(False)
或者你可以把它看作是AND的连接,所以如果迭代器的任何一个值是False,结果就是False。
对于字符串,场景是一样的,只是意义发生了变化
'' empty string -> False
'python' non empty string -> True
试试这个:
trial_list = ['','','','']
trial_list_1 = ['python','','','']
any(trial_list)
False ## logically trial_list is equivalent to [False(''), False(''), False(''), False('')]
any(trial_list_1)
True ## logically trial_list_1 is equivalent to [True('python'), False(''), False('') , False('')]
对于单个非空字符串的情况,any(non empty string) 总是 True
对于单个空字符串 any 的情况(空字符串总是 False
any('')
False
any('python')
True
希望对您有所帮助,
当我遇到一个我不知道的内置函数时,我正在阅读 3.4 的 Python 手册。函数是 any(x)
。
Python手册说这个函数"Return True
if any element of the iterable is true. If the iterable is empty, return False."
他们还编写了与此功能等效的代码。
def any(iterable):
for element in iterable:
if element:
return True
return False
这个功能有什么用?
您可以使用它来避免多个类似的情况,例如。
要检查字符串是否包含子字符串列表,您可以这样做:
str = 'Your cat is hungry.'
if 'cat' in str:
print 'Feed it!'
elif 'dog' in str:
print 'Feed it!'
elif 'hamster' in str:
print 'Feed it!'
...或者您可以这样做:
str = 'Your cat is hungry.'
pets = ['cat', 'dog', 'hamster']
if any(animal in str for animal in pets):
print 'Feed it!'
更新:if element: return True
.
你是对的 - 如果 iterable 中的一个元素有一个值,它就是 True
。在 Python 中,基本上如果变量有一个值,它就是 True
- 显然,只要该值不是 False
。 运行那个例子,看看值和条件,也许它比解释更有帮助:
x = ' '
y = ''
z = False
if x:
print 'x is True!'
else:
print 'x is False!'
if x == True:
print 'x is True!'
else:
print 'x is False!'
if y:
print 'y is True!'
else:
print 'y is False!'
if z:
print 'z is True!'
else:
print 'z is False!'
现在回到 any()
:它接受任何可迭代对象(如列表)作为参数 - 如果该可迭代对象的 any 值为 True
(因此得名), any()
returns True
.
还有一个叫做 all()
的函数 - 它类似于 any()
,但只有 returns True if all values of the iterable是真的:
print any([1, 2, False])
print all([1, 2, False])
真假
之前在@Burhan Khalid 的评论中提到过,但是关于什么被认为是 False
的官方文档也应该在这里提到:
如果你喜欢物理,python中的任何功能就像电路中开关的并联连接。
如果任何一个开关打开,(if element
) 电路将完成,它将点亮串联连接的灯泡。
让我们将灯泡并联连接如图所示作为电路和 灯泡作为指示灯(任何结果)
对于一个实例,如果你有一个 True 和 False 的逻辑列表,
logical_list = [False, False, False, False]
logical_list_1 = [True, False, False, False]
any(logical_list)
False ## because no circuit is on(True) all are off(False)
any(logical_list_1)
True ## because one circuit is on(True) remaining three are off(False)
或者你可以把它看作是AND的连接,所以如果迭代器的任何一个值是False,结果就是False。
对于字符串,场景是一样的,只是意义发生了变化
'' empty string -> False
'python' non empty string -> True
试试这个:
trial_list = ['','','','']
trial_list_1 = ['python','','','']
any(trial_list)
False ## logically trial_list is equivalent to [False(''), False(''), False(''), False('')]
any(trial_list_1)
True ## logically trial_list_1 is equivalent to [True('python'), False(''), False('') , False('')]
对于单个非空字符串的情况,any(non empty string) 总是 True 对于单个空字符串 any 的情况(空字符串总是 False
any('')
False
any('python')
True
希望对您有所帮助,