Python如何高效创建带独立命名的空列表组成的列表
高效实现方案
你逐行手动定义空列表再手动归集到总列表的写法重复冗余,可根据实际需求选择下面的简洁实现:
- 绝大多数场景下,你不需要单独定义
flattenlist_x1到flattenlist_x12这类独立命名变量,后续操作子列表时直接遍历总列表即可,一行代码就能完成需求:
# 生成包含12个相互独立的空列表的总列表 flattenlist_list = [[] for _ in range(12)]
注意:绝对不要用[[]] * 12的写法,这种写法生成的12个元素指向内存中同一个列表对象,修改任意一个子列表时所有位置的列表都会同步变更,会引发很难排查的逻辑bug。
- 如果你确实需要通过独立名称访问单个空列表,更推荐用字典做命名映射,比零散定义全局/局部变量可维护性高很多:
# 用字典存储带名称的空列表,访问时直接取键对应值即可,比如flattenlist_named["x1"] flattenlist_named = {f"x{i}": [] for i in range(1, 13)} # 归集为总列表直接取所有值即可 flattenlist_list = list(flattenlist_named.values())
如果你一定要生成和你原有写法完全一致的、可以直接通过flattenlist_x1这类变量名调用的独立变量(非常不推荐,后续维护成本极高),可以通过动态挂载变量的方式实现:
# 动态生成全局命名变量 for i in range(1, 13): globals()[f"flattenlist_x{i}"] = [] # 归集为总列表 flattenlist_list = [globals()[f"flattenlist_x{i}"] for i in range(1, 13)]
第一种列表推导式直接生成总列表的写法是日常开发的首选,后续要调整子列表的数量只需要修改range的参数即可,不需要逐行增删重复的变量定义代码。
内容的提问来源于stack exchange,提问作者Omkar S
相关产品推荐
相关产品推荐

