开发者社区> 问答> 正文

需要List1中List2元素的公共因子

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中划分数字

展开
收起
一码平川MACHEL 2019-01-23 13:48:58 1581 0
1 条回答
写回答
取消 提交回答
  • 您也可以考虑预先计算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]

    2019-07-17 23:26:36
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载