英文:
Python: write set of lists (1 nested list) to csv file
问题
以下是您提供的内容的翻译:
我有一组带有两个列表的数据。list_2 可以包含任意数量的嵌套列表(这就是我的问题所在)。
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]]
在CSV文件中,它应该如下所示:
2000 -1.86 -1.29 -.99
2100 0.49 0.59 0.19
2200 1.36 1.62 1.76
我已经尝试了一些不同的写文件方法:
with open(file_name, 'w') as file:
writer = csv.writer(file)
writer.writerows(zip(list_1, list_2))
我还尝试在这个问题中看到的先将它们压缩在一起。
我还尝试分离列表(在 list_2 中),但这不允许增长。在运行应用程序之前,我不知道嵌套列表的数量,所以它必须能够增长。
writer.writerows(zip(list_1, list_2, list_3, list_4)) # 不允许动态增长
英文:
I have a set of data with two lists. list_2 can have any number of nested lists in it (which is where my problem stems from).
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]]
once in the csv file it should look like
2000 -1.86 -1.29 -.99
2100 0.49 0.59 0.19
2200 1.36 1.62 1.76
I have tried a few different ways of writing the file
with open(file_name, 'w') as file:
writer = csv.writer(file)
writer.writerows(zip(list_1, list_2))
I've also tried zipping them before as see in this question
I've also tried separating the lists (in list_2) but that does not allow for any growth. I do not know the number of nested lists before running the application so it has to be able to grow.
writer.writerows(zip(list_1, list_2, list_3, list_4)) # does not allow for dynamic growth
答案1
得分: 3
如果我理解正确,您不知道将有多少个列表。但它们都将具有相同的大小?
而且您希望它们以"垂直"方式存储?
我有一种感觉,transpose 操作将对您非常有帮助。
import csv
import numpy
list_1 = [2000.0, 2100.0, 2200.0]
list_2 = [[-1.86, 0.49, 1.36], [-1.29, 0.59, 1.62], [-0.99, 0.19, 1.76]]
list_3 = [list_1] + list_2
output_array = numpy.transpose(numpy.array(list_3))
with open(file_name, 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(output_array)
英文:
if I get you right you don't know how many lists you are going to have. But all of them will have the same size?
And you want them to be stored "vertically"?
I have the feeling a transpose
operation would help you very well.
import csv
import numpy
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]]
list_3 = [list_1] + list_2
output_array = numpy.transpose(numpy.array(list_3))
with open(file_name, 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(output_array)
答案2
得分: 1
你可以使用*
操作符来实现这个:
zip(list_1, *list_2)
这将创建一个包含多个子列表的列表,其中每个子列表的第一个元素来自list_1
,而其余元素来自list_2
中的各个列表。
英文:
You can do this with the *
operator:
zip(list_1, *list_2)
This will create a list of lists where the first element of each sub list comes from list_1
and the remaining elements come from each of the lists in list_2
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论