繁星coding
>>> from collections import Iterable>>> from itertools import chain单线:>>> list(chain.from_iterable(item if isinstance(item,Iterable) and not isinstance(item, basestring) else [item] for item in lis))[1, 2, 3, 4, 5, 6, 7, 8]可读版本:>>> def func(x): #use `str` in py3.x ... if isinstance(x, Iterable) and not isinstance(x, basestring): ... return x... return [x]... >>> list(chain.from_iterable(func(x) for x in lis))[1, 2, 3, 4, 5, 6, 7, 8]#works for strings as well>>> lis = [[1, 2, 3], [4, 5, 6], 7, 8, "foobar"]>>> list(chain.from_iterable(func(x) for x in lis)) [1, 2, 3, 4, 5, 6, 7, 8, 'foobar']使用嵌套列表理解:(与相比,速度会很慢itertools.chain):>>> [ele for item in (func(x) for x in lis) for ele in item][1, 2, 3, 4, 5, 6, 7, 8, 'foobar']