Python递归生成指定规则嵌套列表 禁用循环切片及复制类函数报错修复
报错原因
Python中列表的append()方法是原地修改操作,没有返回值(默认返回None),你的代码直接将append()的结果作为递归返回值,当n≥2时,上一层递归拿到的返回值是None,对None调用append()就触发了AttributeError。
正确实现
观察输出规则可以发现,list_occur(n)的结果等价于list_occur(n-1)的结果末尾追加list_occur(n-1)本身,我们可以用列表加法替代原地append,避免返回None的问题,同时满足所有限制条件。
def list_occur(n): if n == 0: return [] prev = list_occur(n - 1) return prev + [prev] # 测试代码 if __name__ == "__main__": print(list_occur(0)) # 输出 [] print(list_occur(1)) # 输出 [[]] print(list_occur(2)) # 输出 [[], [[]]] print(list_occur(3)) # 输出 [[], [[]], [[], [[]]]]
内容的提问来源于stack exchange,提问作者Schevenz Rs
相关产品推荐
相关产品推荐

