flatten list of list through list comprehension

前端 未结 5 744
闹比i
闹比i 2020-12-01 21:15

I am trying to flatten a list using list comprehension in python. My list is somewhat like

[[1, 2, 3], [4, 5, 6], 7, 8]

just for printing

5条回答
  •  情话喂你
    2020-12-01 21:37

    An alternative solution using a generator:

    import collections
    
    def flatten(iterable):
        for item in iterable:
            if isinstance(item, collections.Iterable) and not isinstance(item, str):  # `basestring` < 3.x
                yield from item  # `for subitem in item: yield item` < 3.3
            else:
                yield item
    
    >>> list(flatten([[1, 2, 3], [4, 5, 6], 7, 8]))
    [1, 2, 3, 4, 5, 6, 7, 8]
    

提交回复
热议问题