list1 = [ 4, 6, 8, 10, 12 ,16 ]
list2 = [ 16, 32, 96]
final = [j for i in list2 for j in list1 if i%j==0]
print(final)
答案:[4,8,16,4,8,16,4,6,8,12,16]
有两个列表list1有因子而list2有数字,想要找到list1中所有数字,它们除了list2中的所有数字
我想要的答案:[4,8,16]
因为所有这些数字都可以从list2中划分数字
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您也可以考虑预先计算list2的gcd,这样就可以避免重复迭代:
from fractions import gcd
from functools import reduce
list1 = [ 4, 6, 8, 10, 12 ,16 ]
list2 = [ 16, 32, 96]
l = reduce(gcd, list2)
print([i for i in list1 if not l%i])
输出:
[4, 8, 16]