python - 列表推导中的嵌套循环和条件检查(python)
问题描述
我目前正在学习 Python 中的列表理解,我想编写一个函数,该函数接受两个列表a
和b
,并返回其中的所有元素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 中的一项,而不是全部。
解决方案
试试这个:
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)]
推荐阅读
- azure - O365 基于组的许可不起作用
- svg - 如何从带有材质 ui 的 SVG 图像创建 SVG 图标?
- javascript - 如何使用javascript打开剑道角度日期选择器弹出窗口
- php - 使用自动生成的 DATETIME 和默认值 CURRENT_TIMESTAMP 插入新对象的 symfony 4 教义错误
- python - 解析电子邮件以识别关键字
- javascript - Django中可修改的项目符号列表
- python - 如何使用 Python 在浏览器中打开网站?
- c# - 使用 LINQ、GroupBy 更改输出样式
- extjs - Sencha ExtJs5 一个模型和一个视图中的多个模型
- c++ - MPI_DOUBLE_INT 和 C++ 结构