Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;“展平”;包含列表列表的列表到列表列表_Python_List - Fatal编程技术网

Python &引用;“展平”;包含列表列表的列表到列表列表

Python &引用;“展平”;包含列表列表的列表到列表列表,python,list,Python,List,这个问题不同于(这会产生一组非常具体的回答,而这些回答并不针对我的情况),也不同于许多“从一个列表到另一个列表”的答案 我想要一个列表,其中一些是列表列表,然后“展平”为列表列表(不仅仅是列表!) 作为一个具体的例子,我想从以下几点开始: my_list_of_list=[[1,2,3]、[9,10]、[8,9,10]、[3,4,6]、[11,12,13]] 对此 target_list_of_list=[[1,2,3]、[9,10]、[8,9,10]、[3,4,6]、[11,12,13]]

这个问题不同于(这会产生一组非常具体的回答,而这些回答并不针对我的情况),也不同于许多“从一个列表到另一个列表”的答案

我想要一个列表,其中一些是列表列表,然后“展平”为列表列表(不仅仅是列表!)

作为一个具体的例子,我想从以下几点开始:

my_list_of_list=[[1,2,3]、[9,10]、[8,9,10]、[3,4,6]、[11,12,13]]
对此

target_list_of_list=[[1,2,3]、[9,10]、[8,9,10]、[3,4,6]、[11,12,13]]

(从视觉上看,我想将外部列表中的所有
[[
]
分别转换为
[
]

这里有一种方法:

def flatten(lst, dh=None):
    # Added so user does not need to pass output list
    if (dh is None):  
        dh = []
    for elem in lst:
        # Will not try to iterate through empty lists
        if elem and (isinstance(elem[0], list)):  
            flatten(elem, dh)
        else:
            dh.append(elem)
    return dh

my_list_of_lists = [[1, 2, 3], [[9, 10], [8, 9, 10], [3, 4, 6]], [11, 12, 13]]
target_list_of_lists = flatten(my_list_of_lists)
print(target_list_of_lists)
输出:

[[1, 2, 3], [9, 10], [8, 9, 10], [3, 4, 6], [11, 12, 13]]

这适用于任何长度和深度的列表。

我认为建议的副本不正确,因为这个问题不想完全展平列表,只需删除嵌套的某些层,同时保留其他层。可能需要添加默认值:
def flatte(lst,dh=None):#。。。dh=[]如果dh是None-else dh
并且在最后返回一个
dh
,这样最终用户就不必设置输出缓冲区了?小心--您需要`=None`和条件,这样每次顶级调用都会启动一个新的列表。否则:
def测试(a=[]):a.append(45);返回a;test()#=>[45];test()#=>[45,45]
:)(我们都是这样做的……前几天我花的时间比我想承认的要长……)注意,我的实际列表在列表列表列表中有
[]
(例如,
我的列表=[[1,2,3],[[9,10],[8,9,10],[3,4,6],[11,12,13]
)。这破坏了解决方案,但将条件更改为
if elem and(isinstance(elem[0],list)):
使其工作。