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

正如评论中指出的那样,对于这个相关问题的大多数(如果不是全部)答案都失败了,例如:

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]


哈士奇WWW
浏览 182回答 2
2回答

三国纷争

你可以递归地做到这一点: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 flattenedls2 = [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]

largeQ

一种方法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]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python