Skip to main content
 首页 » 编程设计

Python之合并列表中的一行列表

2025年05月04日18rubylouvre

我想将 dataset 列表,其中行由不同的列表组成,转换为 newDataset 列表,其中每一行由一个列表组成,该列表由每个元素组成dataset 列表的不同列表。

dataset = [ 
[[2,3,1],[1,2,9],[1,3,8]], 
[[1,4,1],[1,2,10],[9,3,1]], 
[[1,4,0],[1,4,9],[2,5,8]], 
] 
 
newDataset = [ 
[2, 3, 1, 1, 2, 9, 1, 3, 8], 
[1, 4, 1, 1, 2, 10, 9, 3, 1], 
[1, 4, 0, 1, 4, 9, 2, 5, 8] 
] 

我想出了以下代码行:

from itertools import chain 
newDataset = [list(chain(*x)) for x in dataset] 

但是,我想还有更 Pythonic 的方式吗?

另一个相关问题: 我如何生成 newDataset2,其中每一行都包含一行不同列表的第一个元素?

newDataset2 = [ 
[2,1,1], 
[1,1,9], 
[1,1,2], 
] 

请您参考如下方法:

itertools.chain(*x) 

更好地表达为

itertools.chain.from_iterable(x) 

但其他方面都很好。

此外,

>>> [[x[0] for x in y] for y in dataset] 
[[2, 1, 1], [1, 1, 9], [1, 1, 2]]