Python如何实现生成指定嵌套层数r、每层含m个元素的嵌套列表
实现方案
核心思路
你要实现的是r层m叉的嵌套空列表结构,两种最常用的实现方式如下:
- 递归实现:利用递归的终止条件逐层向内生成结构,代码简洁易读,适合r不超过Python默认递归深度(默认1000)的场景
- 迭代实现:从最内层结构向外逐层包裹,没有递归深度限制,适合r极大的场景
代码示例
递归版本
def generate_nested(r: int, m: int) -> list: # 终止条件:嵌套层数只剩1层时,直接返回m个空列表组成的列表 if r == 1: return [[] for _ in range(m)] # 每层由m个r-1层的嵌套结构组成 return [generate_nested(r-1, m) for _ in range(m)]
测试效果:
print(generate_nested(1, 3)) # 输出:[[], [], []] print(generate_nested(2, 3)) # 输出:[[[], [], []], [[], [], []], [[], [], []]]
迭代版本
def generate_nested_iter(r: int, m: int) -> list: # 初始化最内层结构 current = [[] for _ in range(m)] # 向外逐层包裹,共需要包裹r-1次 for _ in range(r-1): current = [current.copy() for _ in range(m)] return current
注意事项
不要使用[[]] * m的写法生成子列表,该写法会让所有子列表指向同一个内存地址,修改任意一个子列表都会同步影响其他所有子列表,必须用列表推导式生成独立的子列表。
内容的提问来源于stack exchange,提问作者mdavies
相关产品推荐
相关产品推荐

