为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哈士奇WWW 2021-11-23 18:01:57
正如评论中指出的那样,对于这个相关问题的大多数(如果不是全部)答案都失败了,例如:ls = [1,2,[3,4]]此外,该列表可以嵌套更深。如何部分展平到用户给定的级别(默认为无穷大)ls2 = [1,[2,3],[4,[5,6]]]所需的输出ls2:展平到级别 1: [1,2,3,4,[5,6]]展平到 2 级(或更高) [1,2,3,4,5,6]
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

你可以递归地做到这一点:


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]


查看完整回答
反对 回复 2021-11-23
?
largeQ

TA贡献2039条经验 获得超7个赞

一种方法


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]


查看完整回答
反对 回复 2021-11-23
  • 2 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信