Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查一个列表的元素是否可被另一个列表的所有元素整除_Python - Fatal编程技术网

Python 检查一个列表的元素是否可被另一个列表的所有元素整除

Python 检查一个列表的元素是否可被另一个列表的所有元素整除,python,Python,我有两份清单: s = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24] a = [2,6] 我想打印所有可被[0]和[1]整除的s列表的数字 在这种情况下,我只需: for num in s: if num % a[0] == 0 and num % a[1] == 0: print(num) 但假设我不知道名单有多长。我怎样才能把它做好 我已经尝试解决这个问题有一段时

我有两份清单:

s = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
a = [2,6] 
我想打印所有可被[0]和[1]整除的s列表的数字

在这种情况下,我只需:

for num in s:
    if num % a[0] == 0 and num % a[1] == 0:
        print(num)
但假设我不知道名单有多长。我怎样才能把它做好


我已经尝试解决这个问题有一段时间了,但是我被卡住了。

您可以将
all
函数与以下生成器表达式一起使用:

if all(num % i == 0 for i in a):

可以将
all
函数与以下生成器表达式一起使用:

if all(num % i == 0 for i in a):

您可以将嵌套列表comp与
all
一起使用,例如:

s = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
a = [2,6]
result = [x for x in s if all(x % y == 0 for y in a)]
给你:

[6, 12, 18, 24]

您可以将嵌套列表comp与
all
一起使用,例如:

s = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
a = [2,6]
result = [x for x in s if all(x % y == 0 for y in a)]
给你:

[6, 12, 18, 24]
您可以先计算
a
的值:

from math import gcd

a = [2, 6]
s = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
lcm = a[0] * a[1] // gcd(a[0], a[1])
print(list(x for x in s if x % lcm == 0)
# [6, 12, 18, 24]
如果
a
长度超过2个元素,这可能会更有效


为了获得元素列表的LCM,您可以使用如下定义的
LCM\u lst

from math import gcd

def lcm(a, b):
    return a * b // gcd(a, b)

def lcm_lst(a):
    l = a[0]
    for x in a[1:]:
        l = lcm(l, x)
    return l
您可以先计算
a
的值:

from math import gcd

a = [2, 6]
s = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
lcm = a[0] * a[1] // gcd(a[0], a[1])
print(list(x for x in s if x % lcm == 0)
# [6, 12, 18, 24]
如果
a
长度超过2个元素,这可能会更有效


为了获得元素列表的LCM,您可以使用如下定义的
LCM\u lst

from math import gcd

def lcm(a, b):
    return a * b // gcd(a, b)

def lcm_lst(a):
    l = a[0]
    for x in a[1:]:
        l = lcm(l, x)
    return l