gpt4 book ai didi

Python提取多级嵌套列表

转载 作者:行者123 更新时间:2023-12-01 00:01:15 24 4
gpt4 key购买 nike

有这个列表

l = [['a', 'b', 'c', 'd'],[[["d","d"]],['z', 'x', 'g', 'd'], ['z', 'C', 'G', 'd']]]

我想要一个提取所有嵌套列表并返回的函数

l = [['a', 'b', 'c', 'd'],["d","d"],['z', 'x', 'g', 'd'], ['z', 'C', 'G', 'd']]

类似于展平,但保留每个嵌套列表的列表结构。这是我最接近的一次,我觉得有一种方法可以实现我的目标,而无需使用额外的结构来过滤重复项。此外,在字符串和列表级别顺序很重要

def get_all_nested_list(l,returned_list):
nested_list = l
while isinstance(nested_list, list):
for elem in nested_list:
get_all_nested_list(elem,returned_list)
if isinstance(nested_list[0], str):
returned_list.append(nested_list)
nested_list = nested_list[0]


if __name__ == '__main__':
l = [['a', 'b', 'c', 'd'],[[["d","d"]],['z', 'x', 'g', 'd'], ['z', 'C', 'G', 'd']]]
l2 = []
get_all_nested_list(l,l2)
print(l2)

通过使用 itertools 或建议使用 Yield 的实际正确方法而不是传递另一个列表作为参数来实现上述目的的任何其他方法都非常受欢迎。

最佳答案

你可以尝试递归函数

my_nested_list = [['a', 'b', 'c', 'd'],[[["d","d"]],['z', 'x', 'g', 'd'], ['z', 'C', 'G', 'd']]]

def flatten(nested_list):
for item in nested_list:
if not isinstance(item[0],list):
yield item
else:
yield from flatten(item)

flat_list = [item for item in flatten(my_nested_list)]
print(flat_list)

关于Python提取多级嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60348623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com