Python 在不删除元组的情况下展平列表

Python 在不删除元组的情况下展平列表,python,Python,如何在不删除元组的情况下展平包含元组的嵌套列表? 例如: flatten([1,2,3,(4,5,6),[7,8,9]]) [1, 2, 3, (4, 5, 6),7,8,9] 这里有一个尝试: f = lambda *n: (e for a in n for e in (f(*a) if isinstance(a, (list)) else (a,))) print(list(f([1,2,3,(4,5,6),[7,8,9]]))) # [1, 2, 3, (4, 5, 6),

如何在不删除元组的情况下展平包含元组的嵌套列表? 例如:

flatten([1,2,3,(4,5,6),[7,8,9]]) 
[1, 2, 3, (4, 5, 6),7,8,9]
这里有一个尝试:

f = lambda *n: (e for a in n
    for e in (f(*a) if isinstance(a, (list)) else (a,)))

print(list(f([1,2,3,(4,5,6),[7,8,9]])))
# [1, 2, 3, (4, 5, 6), 7, 8, 9]
为什么不简单循环:

>>> L = [1,2,3,(4,5,6),[7,8,9]]
>>> L2 = []
>>> for i in L:
    if isinstance(i,list):
        L2.extend(i)
    else:
        L2.append(i)


>>> L2
[1, 2, 3, (4, 5, 6), 7, 8, 9]
>>> 

选择其中一个并添加您自己的类型检查。如果出现问题,发布一个问题寻求帮助。4,5,6应该是[4,5,6],如果你想要预期的结果,这只适用于1层嵌套。但它确实符合问题的标准。
>>> L = [1,2,3,(4,5,6),[7,8,9]]
>>> L2 = []
>>> for i in L:
    if isinstance(i,list):
        L2.extend(i)
    else:
        L2.append(i)


>>> L2
[1, 2, 3, (4, 5, 6), 7, 8, 9]
>>>