You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将分组1-20数字的for循环转换为列表推导式

列表推导式实现数字分组解决方案

核心思路

外层遍历19的所有除数,内层筛选120范围内最大可整除的1~9个位数恰好等于当前除数的数字,直接用max()函数计算每个数字对应的最大有效除数,替代原循环中的临时变量逻辑。

最终实现代码

result = [
    [num for num in range(1, 21) if max(d for d in range(1, 10) if num % d == 0) == div]
    for div in range(1, 10)
]

输出验证

运行后打印result即可得到需求要求的简化有效输出:

[[1, 11, 13, 17, 19], [2], [3], [4], [5, 10, 15, 20], [6, 12], [7, 14], [8, 16], [9, 18]]

如果需要完全对齐原for循环的输出结构(保留首项空列表),可调整代码如下:

values = [[]] + [
    [num for num in range(1, 21) if max(d for d in range(1, 10) if num % d == 0) == div]
    for div in range(1, 10)
]

内容的提问来源于stack exchange,提问作者Temple Version

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:06:07