给定一个列表,我想检查该列表中的所有元素是否都可以被某个给定的整数整除。基于此,我必须返回一个 bool 值。
l=[10,30,40,20]
例如 - 此列表的所有元素都可以被 5 整除。然后,我将返回 True。 对于 6,我会返回 False。
我能想到的一种方法是生成一个由 bool 值组成的数组,然后对它们进行AND。
blist=[x%5==0 for x in l]
# [False, False, False, False]
# AND THE ELEMENTS
但这种方法有点糟糕。谁能提出一个更简单的 pythonic 方法。
请您参考如下方法:
首先,您需要取模除法 (%),因为您希望查看它是否被 5 整除,因此您检查的是余数,而不是余数划分结果。
您可以使用 the all() builtin (它按照 jar 头上的说明进行操作),但是 you don't need to generate a list, instead use a generator expression :
all(x%5 == 0 for x in l)
这有惰性的优点,所以一旦一个值不可整除它就会返回,节省计算
