
python中有时候list会多层嵌套,需要展开成一维列表,最快速的方法是使用yield生成器.
但是针对一层嵌套的[[a,b,c],[d,e]]这种,sum(L,[])还是最快的.
====================
更新: 最简短的代码:
flat_list=lambda t:sum(([x]if not isinstance(x,list)else flat_list(x)for x in t),[])====================
def flat(s):
for item in s:
if isinstance(item,list):
for subitem in flat(item):
yield subitem
else:
yield item
def checkio(data):
return [x for x in flat(data)]
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert checkio([1, 2, 3]) == [1, 2, 3], 'First example'
assert checkio([1, [2, 2, 2], 4]) == [1, 2, 2, 2, 4], 'Second example'
assert checkio([[[2]], [4, [5, 6, [6], 6, 6, 6], 7]]) \
== [2, 4, 5, 6, 6, 6, 6, 6, 7], 'Third example'
No comments :
Post a Comment