Python检查两个列表
我对python比较陌生,遇到了以下问题: 给定两个列表a和b以及一个整数n,检查是否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 测
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的上述评论是正确的。如果您想执行类似“ReturnFalse
/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)