这个问题不同于将列表/嵌套列表转换为不嵌套的列表(这会产生一组非常具体的响应,无法解决我的情况),也不同于许多“列表的扁平列表”答案。
我要列出一个列表,其中一些又是列表列表,然后“拉平”到列表列表(而不仅仅是列表!)。
作为一个具体的例子,我想从这里开始:
my_list_of_lists = [[1, 2, 3], [[9, 10], [8, 9, 10], [3, 4, 6]], [11, 12, 13]]
Run Code Online (Sandbox Code Playgroud)
对此
target_list_of_lists = [[1, 2, 3], [9, 10], [8, 9, 10], [3, 4, 6], [11, 12, 13]]
Run Code Online (Sandbox Code Playgroud)
(从视觉上讲,我想将外部列表中的所有[[和]] 内部分别转换为[和]。)
这是一种实现方法:
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)
Run Code Online (Sandbox Code Playgroud)
输出:
[[1, 2, 3], [9, 10], [8, 9, 10], [3, 4, 6], [11, 12, 13]]
Run Code Online (Sandbox Code Playgroud)
这将适用于任何长度和深度的列表。
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |