展开嵌套列表算法是一个常考点,既是基础,但是要写好也不简单,我见过很多个版本,老手和新手之间的差别简直堪比云泥。接下来分享一个高效又巧妙的版本,代码也很短。
今天在知乎同样看到了一下这段代码,是之前flatten
的lambda
版本,可以说是把pythonic
思想进一步升华了,实在是太优美啦。
flatten = lambda nested: list(filter(lambda _: _,
(lambda _: ((yield from flatten(e)) if isinstance(e, Iterable) else (yield e) for e in _))(nested)))
================= 2018.02.03 =