我知道Python中的模%
意味着得到余数,例如:
print 6 % 4 # 2, because 6 = 1 * 4 + 2
print 4 % 2 # 0, because 4 = 2 * 2 + 0
我还了解到 all()
函数就像通用量化,如果所有命题都为 True
,则返回 True
,并且它的参数应该是一个可迭代的。
my_list = [True, True, True, True]
print all(my_list) # True
但是我一直无法理解以下代码:
test_num = [3,6,9]
print all (11 % i for i in test_num) # True
for unknown in (11 % i for i in test_num):
print unknown, type(unknown) # 2 <type 'int'>
# 5 <type 'int'>
# 2 <type 'int'>
那么,为什么我可以从所有项都是整数的iterable中得到True值呢?
谢谢!
最佳答案
如果您在 boolean 上下文中获取整数(例如在条件中,或通过 bool
显式获取),它将返回该整数是否非零:
>>> bool(0)
False
>>> bool(43)
True
让我们看一下代码:
(11 % i for i in test_num)
是一个生成器,可展开为 11 % 3
、11 % 6
和 11 % 9
,变为 2
、5
和 2
。由于它们均非零,因此 all
返回 True
。
实际上,当且仅当 11 既不能被 3、6 也不能被 9 整除时,这才返回 True
。
关于python - 如何理解Python中all()函数中的取模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35106409/