Python中如何通过动态数组名循环?数组追加元素问题求助
解决按名称循环操作相似数组的问题
你当前的写法是把变量名拼接成了字符串,而不是直接引用对应的列表对象,自然没法调用append方法。下面给你两种可行的解决方案:
推荐方案:用列表容器统一管理(更Pythonic)
直接创建一个列表来存放所有子列表,通过索引访问对应元素,完全避免字符串拼接的问题:
# 创建包含5个空列表的容器 a_list = [[] for _ in range(5)] for k in range(len(mlac)): for i in range(len(mlac[0])): a_list[i].append(mlac[k][i])
之后你可以通过a_list[0]访问原来的a0,a_list[1]访问a1,以此类推。
如果想更高效,还可以利用zip直接按列拆分数组,省去嵌套循环:
# 直接将mlac按列拆分并转为列表 a_list = list(map(list, zip(*mlac)))
zip(*mlac)会把二维数组的每一列打包成元组,map(list, ...)将每个元组转为列表,一行代码就能完成需求。
备选方案:通过命名空间字典获取变量
如果一定要保留a0到a4这些单独的变量,可以通过全局命名空间字典来获取对应的列表对象:
a0=[] a1=[] a2=[] a3=[] a4=[] for k in range(len(mlac)): for i in range(len(mlac[0])): # 通过变量名字符串从全局字典中取出列表 globals()[f'a{i}'].append(mlac[k][i])
不过这种方法不推荐,直接操作全局变量容易引发意外问题,代码维护性也较差。
内容的提问来源于stack exchange,提问作者Lyu
相关产品推荐
相关产品推荐

