Python循环生成列表的追加合并:输出不符预期问题排查
问题:合并循环生成的嵌套列表
当前代码在i=1、2时分别生成对应列表A,期望将每次循环得到的A追加合并为一个整体嵌套列表。
当前代码
import pandas as pd import numpy as np A=[] for i in range(1,3): file_loc = f"C:\\Users\\USER\\OneDrive - Technion\\Research_Technion\\Python_PNM\\Sept12_2022\\{i}\\Test.xlsx" df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], usecols="A,C:AA") A=df["N"].to_numpy() A = [x for x in A if str(x) != 'nan'] A = [eval(e) for e in A] print([A])
实际输出
[[1], [2], [3], [4], [5]] [[8], [4], [6], [2], [3]]
预期输出
[[[1], [2], [3], [4], [5]],[[8], [4], [6], [2], [3]]]
解决方案
问题出在循环中每次直接给A赋值,覆盖了初始的空列表容器。要实现嵌套合并,需保留初始的A作为外层容器,将每轮循环生成的子列表追加进去。
修改后的代码:
import pandas as pd import numpy as np # 初始化外层嵌套列表容器 A = [] for i in range(1,3): file_loc = f"C:\\Users\\USER\\OneDrive - Technion\\Research_Technion\\Python_PNM\\Sept12_2022\\{i}\\Test.xlsx" df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], usecols="A,C:AA") # 用临时变量存储当前循环的处理结果,避免覆盖外层容器 current_A = df["N"].to_numpy() current_A = [x for x in current_A if str(x) != 'nan'] current_A = [eval(e) for e in current_A] # 将当前循环的子列表追加到外层容器 A.append(current_A) # 打印最终的嵌套列表 print(A)
关键改动说明
- 保留初始的
A = []作为外层嵌套列表的容器 - 循环内使用临时变量
current_A处理每一轮的数据,避免直接覆盖外层容器 - 每轮处理完成后,用
A.append(current_A)将当前子列表加入外层容器 - 循环结束后打印整个
A,即可得到预期的嵌套结构
内容的提问来源于stack exchange,提问作者user19862793
相关产品推荐
相关产品推荐

