[英]Flattening lists without removing the tuples
如何在不删除元组的情况下展平包含元组的嵌套列表? 例子:
flatten([1,2,3,(4,5,6),[7,8,9]])
[1, 2, 3, (4, 5, 6),7,8,9]
def flatten(arr):
if not isinstance(arr, list):
return arr
else:
output = []
for sy in arr:
if isinstance(sy, list):
temp = flatten(sy)
for py in temp:
output.append(py)
else:
output.append(sy)
return output
print (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]
>>>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.