首页 > 解决方案 > 列表推导中的嵌套循环和条件检查(python)

问题描述

我目前正在学习 Python 中的列表理解,我想编写一个函数,该函数接受两个列表ab,并返回其中的所有元素a都可以被 的所有元素整除b

相当于这个(不使用列表理解)将是:

    a = [10, 5]
    b = [5, 2]
    c = []
    d = True
    for i in a:
        for j in b:
            if i % j != 0:
                d = False
        if d:
            c.append(i)
    return c

如何通过列表理解做到这一点?我目前有[x for x in a for y in b if x % y == 0],但只需要 x 匹配 b 中的一项,而不是全部。

标签: pythonlist-comprehension

解决方案


试试这个:

a = [10, 5]
b = [5, 2]

res = [x for x in a if all(x % y == 0 for y in b)]

以完成@superb rain 的评论。这里也是 any(...) 的示例:

res = [x for x in a if not any(x % y != 0 for y in b)]

推荐阅读