Python实现子列表长度逐增的金字塔嵌套列表作业问题求助
问题分析与代码修复
现有代码的问题
- 仅声明了一个全局列表
list1,所有生成的1都直接追加到该列表中,没有按行生成独立的子列表,最终得到的是一维扁平列表,不符合要求的嵌套结构。 print语句放在循环内部,只会打印每一步的中间执行结果,无法输出最终的完整嵌套列表。
你提到的逻辑和绘制三角形右侧逻辑类似是正确的,该需求本质就是逐行生成对应长度的全1列表,再将所有子列表汇总为总列表即可。
正确实现
基于你的while逻辑修改版本
def pyramid(x): # 总嵌套列表,存储所有行的子列表 result = [] line = 0 while line < x: # 每次循环先初始化当前行的子列表 current_line = [] # 当前行需要生成 line+1 个1 num_count = line + 1 while num_count > 0: current_line.append(1) num_count -= 1 # 将当前行子列表加入总列表 result.append(current_line) line += 1 return result
更简洁的列表推导式版本
利用Python列表乘法特性可以大幅简化代码:
def pyramid(x): # 遍历1到x,每次生成对应长度的全1子列表 return [[1] * i for i in range(1, x + 1)]
测试验证
print(pyramid(0)) # 输出 [] print(pyramid(1)) # 输出 [[1]] print(pyramid(2)) # 输出 [[1], [1, 1]] print(pyramid(3)) # 输出 [[1], [1, 1], [1, 1, 1]]
内容的提问来源于stack exchange,提问作者dean89
相关产品推荐
相关产品推荐

