展平列表列表,独立于内容类型和子列表的长度和深度

Flatten a list of lists independent on content types and length and depth of sublists

我想展平这样的列表:

l = ["af", 2, [4.123, "ic", [-8, ["xdr"], -6]], [], [-2]]

结果应该是:

f = ['af', 2, 4.123, 'ic', -8, 'xdr', -6, -2]

列表 l 和所有子列表可以有任意长度,可以包含任何类型的数据并且可以包含任意深度的嵌套子列表。

我找不到关于我的问题的任何已回答问题,而且我也找不到任何包含单行解决方案的包。

我的简单代码可以完成我想要的,但我确信解决方案已经存在。

l = ["af",2,[4.123,"ic",[-8,["xdr"],-6]],[],[-2]]
f = []
x = [1]

def flatten (val):
    if type(val) != type(x):
         f.append(val)
    else:
        for i in range(0,len(val)):
            flatten(val[i])

for i in range(0,len(l)):
    flatten(l[i])

print(f)

# output is ['af', 2, 4.123, 'ic', -8, 'xdr', -6, -2]
import pydash 
l = ["af", 2, [4.123, "ic", [-8, ["xdr"], -6]], [], [-2]]
pydash.flatten_depth(l,-1)
# output: ['af', 2, 4.123, 'ic', -8, 'xdr', -6, -2]