检查该列表中的所有元素是否可以被某个给定的整数整除

时间:2012-12-07 15:28:14

标签: python

给定一个列表,我想检查该列表中的所有元素是否可以被某个给定的整数整除。基于此,我必须返回一个布尔值。

l=[10,30,40,20]

例如 - 此列表的所有元素都可以被5整除。然后,我将返回True。 对于6,我会返回False

我能想到的一种方法是生成一个包含布尔值的数组,然后生成AND个。

blist=[x%5==0 for x in l]
# [False, False, False, False]
# AND THE ELEMENTS

但这种方法感觉不好。任何人都可以提出更简单的pythonic方式。

2 个答案:

答案 0 :(得分:7)

首先,你想要模数除法(%),因为你想看看它是否均匀地除以5,所以你要检查余数,而不是除法的结果。

您可以使用the all() builtin(在锡上执行的操作),但you don't need to generate a list, instead use a generator expression

all(x%5 == 0 for x in l)

这有一个懒惰的优点,所以一旦值不可分,它就会返回,从而节省计算

答案 1 :(得分:4)

使用列表推导是pythonic。你需要使用mod not div。

使用内置的all

res = all([x%5==0 for x in l])

您可以通过

更有效地完成此操作
res = all(x%5 == 0 for x in l)

使用生成器表达式。在第一种情况下,python生成所有mod值的列表,在第二种情况下,值生成为all所需的值,因此只生成第一个不可分割的值。