Py学习  »  Python

Python的zip可以用来重构更深层次的嵌套列表吗?

Petteri Nevavuori • 5 年前 • 1800 次点击  

假设我有以下包含列表的列表列表:

samples = [
    # First sample
    [
        # Think 'x' as in input variable in ML
        [
            ['A','E'], # Data
            ['B','F']  # Metadata
        ],
        # Think 'y' as in target variable in ML
        [
            ['C','G'], # Data
            ['D','H'], # Metadata
        ]
    ],
    # Second sample
    [
        [
            ['1'],
            ['2']
        ],
        [
            ['3'],
            ['4']
        ]
    ]
]

我要的输出如下所示:

>>> samples
[
    ['A','E','1'], # x.data
    ['B','F','2'], # x.metadata
    ['C','G','3'], # y.data
    ['D','H','4']  # y.metadata
]

我的问题是 是否存在一种利用Python的方法 zip 函数和一些列表理解来实现这一点?

我已经寻找了一些解决办法,但是例如 this this 处理使用 拉链 处理不同的列表,而不是内部列表。

实现这一点的一种方法很可能是对样本进行简单的迭代,如下所示:

x,x_len,y,y_len=[],[],[],[]

for sample in samples:
    x.append(sample[0][0])
    x_len.append(sample[0][1])
    y.append(sample[1][0])
    y_len.append(sample[1][1])

samples = [
    x,
    x_len,
    y,
    y_len
]

我仍然好奇是否有一种方法可以利用。 拉链 结束 for 循环样本及其嵌套列表。

请注意 data metadata 可以在不同的样本长度上变化。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52049
 
1800 次点击  
文章 [ 4 ]  |  最新文章 5 年前