首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将列表部分展平到给定的级别

将列表部分展平到给定的级别
EN

Stack Overflow用户
提问于 2019-03-02 00:36:34
回答 2查看 59关注 0票数 1

正如评论中所指出的,对于像这样的列表,this相关问题的大多数答案(如果不是所有答案)都会失败:

代码语言:javascript
运行
复制
ls = [1,2,[3,4]]

此外,列表可以嵌套得更深。如何部分展平到用户给定的级别(默认情况下展平到无穷大)

代码语言:javascript
运行
复制
ls2 = [1,[2,3],[4,[5,6]]]

ls2的所需输出

展平到级别1:

代码语言:javascript
运行
复制
 [1,2,3,4,[5,6]]

展平到级别2(或更高)

代码语言:javascript
运行
复制
 [1,2,3,4,5,6]
EN

回答 2

Stack Overflow用户

发布于 2019-03-02 00:49:04

您可以递归地执行此操作:

代码语言:javascript
运行
复制
def flatten(l, level=None):
    if level == 0:
        return l
    flattened = []
    for item in l:
        if isinstance(item, list):
            flattened.extend(flatten(item, level-1 if level is not None else None))
        else:
            flattened.append(item)

    return flattened

ls2 = [1,[2,3],[4,[5,6]]]

print(flatten(ls2, level=1))
# [1, 2, 3, 4, [5, 6]]

print(flatten(ls2, level=2))
# [1, 2, 3, 4, 5, 6]

print(flatten(ls2))
# [1, 2, 3, 4, 5, 6]
票数 1
EN

Stack Overflow用户

发布于 2019-03-02 01:01:24

一种方法就是这样做

代码语言:javascript
运行
复制
ls2 = [1,[2,3],[4,[5,6]]]

def make_list_of_list(a):
    return [[i]if not isinstance(i, list) else i for i in a]

def flatten(l):
    return [item for sublist in make_list_of_list(l) for item in sublist]

flatten(ls2) will result in [1, 2, 3, 4, [5, 6]]
flatten(flatten(ls2)) will result in [1, 2, 3, 4, 5, 6]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54948803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档