如何修正Python代码以生成和为指定整数N的所有整数元组对?
问题分析
你的代码核心问题是每次循环都用单个元组覆盖了pairs变量,所以最后只会保留最后一次循环生成的元组,没有把所有符合条件的整数对收集起来。另外,单独维护m和l两个列表属于冗余操作,可以直接在循环里生成目标元组。
修正方案1:用列表收集所有元组
初始化一个空列表,每次循环把生成的元组添加进去:
degree = 9 pairs = [] for i in range(degree): # 直接生成(degree - i, i)的元组并添加到列表 pairs.append( (degree - i, i) ) # 若需要输出成目标格式,可转换后打印 print( ','.join(map(str, pairs)) )
运行结果:
(9, 0),(8, 1),(7, 2),(6, 3),(5, 4),(4, 5),(3, 6),(2, 7),(1, 8)
修正方案2:用列表推导式简化代码
用Python列表推导式一行生成所有元组,更简洁:
degree = 9 pairs = [ (degree - i, i) for i in range(degree) ] # 转换为目标格式输出 print( ','.join(map(str, pairs)) )
额外说明
range(0, degree)可简化为range(degree),因为range默认从0开始- 无需单独创建
m和l列表,直接通过degree - i和i就能得到每一对的两个数,减少不必要的内存占用
内容的提问来源于stack exchange,提问作者feration48
相关产品推荐
相关产品推荐

