如何将含嵌套列表的多列表数据写入CSV文件?
动态嵌套列表的CSV写入解决方案
要实现将list_1与list_2中任意数量的嵌套列表按指定格式写入CSV,核心是先对list_2进行转置,再与list_1组合生成每行数据,具体实现如下:
关键思路
list_2中的每个子列表对应CSV的一列,转置后每个子列表对应CSV的一行后续内容,再与list_1的元素一一组合,即可得到目标格式的行数据。
代码实现
import csv list_1 = [2000.0, 2100.0, 2200.0] list_2 = [[-1.86, 0.49, 1.36], [-1.29, 0.59, 1.62], [-.99, 0.19, 1.76]] file_name = "output.csv" with open(file_name, 'w', newline='') as file: # 指定制表符分隔,匹配目标格式 writer = csv.writer(file, delimiter='\t') # 转置list_2,再与list_1元素组合成每行 rows = [(num,) + cols for num, cols in zip(list_1, zip(*list_2))] writer.writerows(rows)
代码说明
zip(*list_2):实现嵌套列表转置,将原list_2中每个子列表的对应位置元素提取为新元组,例如原list_2转置后得到:[(-1.86, -1.29, -0.99), (0.49, 0.59, 0.19), (1.36, 1.62, 1.76)]- 列表推导式:将list_1的每个元素与转置后的对应元组合并,生成完整的行数据。
- 动态适配:无论list_2中有多少个嵌套子列表,代码无需修改即可自动适配,满足动态扩展需求。
测试验证
如果list_2新增一个嵌套子列表:
list_2 = [[-1.86, 0.49, 1.36], [-1.29, 0.59, 1.62], [-.99, 0.19, 1.76], [-0.5, 0.3, 1.2]]
写入CSV后会自动生成如下格式:
2000 -1.86 -1.29 -.99 -0.5 2100 0.49 0.59 0.19 0.3 2200 1.36 1.62 1.76 1.2
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

