如何展平嵌套的“同质”lis

2024-04-28 11:37:13 发布

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

我读过What is the fastest way to flatten arbitrarily nested lists in Python?,它很好地回答了如何在Python中展平任意嵌套的列表。然而,很多时候,列表嵌套的深度是任意的,但是是同质的。同构嵌套列表在具有相同深度的所有列表元素之间具有相同的结构。你知道吗

  • 这是一个同构列表:[[0, 1], [2, 3]]
  • 这不是一个同质列表:[0, 1, [2, 3]]

最好的方法是平展这种低深度的列表:惯用的列表理解:[inner for outer in seq for inner in outer]对于更大深度的列表,这很快就会变得很难处理,需要占用许多行来表达一个简单的想法。考虑一下:[more_inner inner for outer in seq for inner in outer for more_inner in inner]这很难理解,而且是一个麻烦。你知道吗

对于这种常见的特殊情况,我们能否提出一种既可读又高效的具体解决方案?你知道吗


Tags: thetoin列表forismorewhat
1条回答
网友
1楼 · 发布于 2024-04-28 11:37:13

以下是我的解决方案:

def homo_flat( seq ):
    first = 0
    while True:
        if type( seq[ first ] ) not in [ list, tuple ]:
            return seq
        else:
            seq = [ inner for outer in seq for inner in outer ]

相关问题 更多 >