如何生成长度从n递减至1的嵌套列表?
解决嵌套列表生成问题
你当前的代码问题在于只把所有0追加到了同一个一维列表里,没有构建嵌套的子列表结构,所以得到的是一串平铺的0。
解决方法1:基础循环实现
用外层循环控制子列表的数量,每次循环先创建对应长度的全0子列表,再将其加入主列表:
triangle = [] n = 5 # 可替换为任意正整数 for i in range(n): # 每个子列表的长度从n递减到1,对应n-i sub_list = [0] * (n - i) triangle.append(sub_list)
解决方法2:列表推导式(更简洁)
用Python的列表推导式可以一行完成,逻辑和上面一致:
n = 5 triangle = [[0] * (n - i) for i in range(n)]
验证一下:当n=4时,输出为[[0, 0, 0, 0], [0, 0, 0], [0, 0], [0]];当n=5时,会生成包含5个长度依次为5、4、3、2、1的全0子列表的嵌套结构,完全符合需求。
内容的提问来源于stack exchange,提问作者Jisoo Kim
相关产品推荐
相关产品推荐

