展平列表列表,独立于内容类型和子列表的长度和深度
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]
我想展平这样的列表:
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]