在 Python 中的 csv 列中编写几个列表列表

Posted

技术标签:

【中文标题】在 Python 中的 csv 列中编写几个列表列表【英文标题】:Write several list of lists in a csv columns in Python 【发布时间】:2013-12-20 12:10:48 【问题描述】:

我有一个列表列表,需要将其每个元素写入 csv 列。 使用下面的代码,它会输出我想要的。

for row in izip_longest(*averages_, fillvalue = ['']):
    writer.writerow(row[0] + row[1])

第[0]行的样本行:

['0.000000', '0.000586', '0.005819', '0.011434', '0.052012', 0.000586118993]

问题: 如何将 (row[0] + row[1]) 部分替换为其中包含变量的代码,以便它自动在主列表中添加任意数量的子列表 (row[i] + row[i+1] + row[i+2]...)

【问题讨论】:

行中的项目是列表?你能举一个由 izip_longest() 产生的 row 的例子吗? @wwii,是的。请查看更新。 【参考方案1】:

如果 row 是列表列表,请将 (row[0] + row[1]) 替换为

list(itertools.chain.from_iterable(row))

[item for sublist in row for item in sublist]

您正在展平列表列表。我从https://***.com/a/952952/2823755中选择了这两个

【讨论】:

非常感谢。 扁平化是当时的关键!我相信itertools 的执行速度比list comprehension 快,对吧? 我没有做任何计时,但其他 SO 帖子表明它是。【参考方案2】:

如果我很了解您想要的东西,那么以下内容应该可以完成:

writer.writerow(reduce(lambda x, y: x+y, row)) 

这适用于的所有元素。如果你想总结第一个 count 个元素,你可以这样尝试:

writer.writerow(reduce(lambda x, y: x+y, row[:count - 1])) 

【讨论】:

之前没用过lambda!似乎很方便。谢谢安德烈。我选择 wwii 的答案只是为了稍微缩短执行时间,但你的答案也很有魅力。

以上是关于在 Python 中的 csv 列中编写几个列表列表的主要内容,如果未能解决你的问题,请参考以下文章

在Python中的列中将不同大小的列表写入csv

在Python中的csv文件中添加两个列表以分隔列

将python字典写入CSV列:第一列的键,第二列的值

在 python 的 2 列 CSV 文件中写入 2 个列表

使用python为1列中的相同值创建多个csv

Python:将列表写入 Pandas 中的列