将嵌套数据集转换为平面数据集,同时保留足够的数据将其转换回嵌套数据集

2024-05-29 10:51:28 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个数据集

(1, 2, (3, 4), (5, 6), (7, 8, (9, 0)))

我想把它转换成一个(半)平面表示,比如

^{pr2}$

从这里拿走,(如果你用的话)

def flatten(iterable):
    for i, item in enumerate(iterable):
        if hasattr(item, '__iter__'):
            for nested in flatten(item):
                yield nested
        else:
            yield item

这将把它转换成一个类似于(迭代后)的列表

[1, 2, 3, 4, 5, 6, 7, 8, 9]

但是我不能从这个重演中得到原著,而我可以从第一个重演中取回原著。(如果每个元组只有2个元素)


Tags: 数据inforifdefiterableitem平面
2条回答

这将给出示例输出。不知道这是否真的是最好的方式来代表你想要的模型,尽管。。。在

def combineflatten(seq):
    items= tuple(item for item in seq if not isinstance(item, tuple))
    yield items
    for item in seq:
        if isinstance(item, tuple):
            for yielded in combineflatten(item):
                yield items+yielded

>>> tuple(combineflatten((1, 2, (3, 4), (5, 6), (7, 8, (9, 0)))))
((1, 2), (1, 2, 3, 4), (1, 2, 5, 6), (1, 2, 7, 8), (1, 2, 7, 8, 9, 0))

使用不同的“平面”表示法如何,可以转换回:

[1, 2, '(', 3, 4, ')', '(', 5, 6, ')', '(', 7, 8, '(', 9, 0, ')', ')']

相关问题 更多 >

    热门问题