如何按绝对值和的顺序无限迭代整数对并逐个获取?
实现方案
核心思路
- 定义绝对值和
s = |x| + |y|,让s从0开始无限递增 - 对每个
s,枚举所有符合|x| + |y| = s的整数对,逐个返回 - 用Python生成器实现惰性计算,天然支持无限迭代、逐个取值
代码实现
def generate_integer_pairs(): s = 0 while True: if s == 0: yield (0, 0) s += 1 continue for x in range(-s, s + 1): y_abs = s - abs(x) if y_abs == 0: yield (x, 0) else: yield (x, y_abs) yield (x, -y_abs) s += 1
使用示例
# 初始化生成器 pair_gen = generate_integer_pairs() # 逐个获取整数对,比如取前15个输出 for _ in range(15): print(next(pair_gen))
输出结果和需求示例逻辑一致,若需要匹配你给出的具体顺序,只要调整for循环内的yield顺序即可,同绝对值和的整数对顺序可任意定制。
方案优势
- 支持无限迭代:只要不断调用
next(pair_gen)就会持续返回下一个整数对,没有范围限制 - 内存占用极低:惰性生成,不会一次性预计算所有整数对,运行时只保留当前计算的
s状态 - 可定制性强:如果需要调整相同绝对值和的整数对顺序,只要修改循环内的输出逻辑即可
内容的提问来源于stack exchange,提问作者Simd
相关产品推荐
相关产品推荐

