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

Python嵌套for循环优化问询:能否将找可整除数对的代码压缩为1-2行?

如何将找可整除数对的代码压缩为1-2行?

当然可以!虽然这种紧凑写法确实不够Pythonic(毕竟Python的核心原则之一是「可读性至上」),但咱们完全能把逻辑塞进1-2行里,下面给你几种实现方式:

方法1:用生成器表达式 + next()

直接获取第一个符合条件的数对:

nums = [3, 6, 2, 7]
first_valid_pair = next((x, y) for i, x in enumerate(nums) for y in nums[i+1:] if x % y == 0 or y % x == 0)
  • 用enumerate拿到索引,避免重复比较同一组数字(比如不会同时检查(3,6)和(6,3))
  • 如果列表中没有符合条件的数对,next()会抛出StopIteration,可以加默认值避免报错:next(..., None)

方法2:借助itertools.combinations

利用itertools.combinations直接生成所有不重复的两两组合,再筛选:

from itertools import combinations
first_valid_pair = next((a, b) for a, b in combinations(nums, 2) if a % b == 0 or b % a == 0)

这种写法更简洁,因为combinations已经帮我们处理了不重复配对的逻辑,不需要手动管理索引。

如果想获取所有符合条件的数对,只需要把next()换成list()即可:

all_valid_pairs = [(a, b) for a, b in combinations(nums, 2) if a % b == 0 or b % a == 0]

小提醒

虽然这些写法能压缩代码,但可读性远不如你原来的嵌套循环,尤其是对其他维护代码的人(甚至几周后的你自己)来说,理解逻辑会更费力。所以实际项目中,还是推荐保持清晰的代码结构,除非是在一些追求极简的场景下使用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:14:18