Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.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,我对python比较陌生,遇到了以下问题: 给定两个列表a和b以及一个整数n,检查是否 a) a的所有元素都是n的因子 b) n是b的所有元素的因子 我的代码似乎不正确。有人能指出这里的错误吗 return n if n%x==0 for x in a and y%n==0 for y in b 感谢您提供的任何帮助显而易见的帮助(您错过了所有(…)): 有趣的一点: 0 == n % reduce(lcm, a) == reduce(gcd, b) % n 但是需要Python 3.9 测

我对python比较陌生,遇到了以下问题:

给定两个列表a和b以及一个整数n,检查是否
a) a的所有元素都是n的因子
b) n是b的所有元素的因子

我的代码似乎不正确。有人能指出这里的错误吗

return n if n%x==0 for x in a and y%n==0 for y in b
感谢您提供的任何帮助

显而易见的帮助(您错过了所有(…)):

有趣的一点:

0 == n % reduce(lcm, a) == reduce(gcd, b) % n
但是需要Python 3.9

测试代码:

from itertools import product
from math import gcd, lcm
from functools import reduce

R = range(1, 11)
true = false = 0
for n in R:
    for a in product(R, repeat=3):
        for b in product(R, repeat=3):
            expect = all(n % x == 0 for x in a) and all(y % n == 0 for y in b)
            result = 0 == n % reduce(lcm, a) == reduce(gcd, b) % n
            assert result == expect
            true += expect
            false += not expect
print(true, false)

=>没有失败,相同的2723个真结果和9997277个假结果。

您是否希望此函数返回一个
bool
值,说明是否满足这两个条件?For循环的工作方式不是这样的。请发布完整的代码。
返回全部(a中n的n%x==0)和全部(b中y的y%n==0)
@Dev5如果您只想返回
bool
,那么@Chris_Rands的上述评论是正确的。如果您想执行类似“Return
False
/
None
这样的操作,您可以在
if
/
树中使用他的解决方案。如果不通过,则返回
int
。@JPI93好的,是的,很抱歉我的问题不完全准确。感谢提供更多信息:)
from itertools import product
from math import gcd, lcm
from functools import reduce

R = range(1, 11)
true = false = 0
for n in R:
    for a in product(R, repeat=3):
        for b in product(R, repeat=3):
            expect = all(n % x == 0 for x in a) and all(y % n == 0 for y in b)
            result = 0 == n % reduce(lcm, a) == reduce(gcd, b) % n
            assert result == expect
            true += expect
            false += not expect
print(true, false)