需求:展开为多维展开为一维列表。
查阅了网上很多资料,方法各有好坏,有的方法就比较长:
例如:
def flap(*a):
'''Breadth-First Traversal'''
a=list(a);r=[];i=0
while -1<i<len(a):
if hasattr(a[i], '__iter__'):a.extend(a[i])
else:r.append(a[i])
i+=1
return tuple(r)
又例如:
from collections import deque
def zipper(itrs):
q = deque(itrs)
while q:
itr = q.popleft()
try:
yield next(itr)
q.append(itr)
except StopIteration:
pass
最终找了一个最简单的办法:
sum(myList,[])
并对此做了一些简单场景的测试,完全没问题
1.纯字符串型
ll=[['a', 'aa', 'aaa'], ['b', 'bb', 'bbb']]
sum(ll,[])
输出
['a', 'aa', 'aaa', 'b', 'bb', 'bbb']
- 混合型
ll=[['a', 'aa', 'aaa'], ['b', 'bb', 'bbb'],[1,2,3]]
sum(ll,[])
输出
['a', 'aa', 'aaa', 'b', 'bb', 'bbb', 1, 2, 3]
- 纯数值型
li=[[1, 2, 3], [4, 5, 6]]
sum(li,[])
输出
[1, 2, 3, 4, 5, 6]
简单,好用,牛逼