flatten list in python

后端 未结 5 1563
南旧
南旧 2021-01-26 01:04

I want to flatten the list:

exampleArray = [[[151.68694121866872]], 
                [[101.59534468349297]], 
                [[72.16055999176308]]]
相关标签:
5条回答
  • 2021-01-26 01:38

    How about

    result = [x[0][0] for x in exampleArray]
    
    0 讨论(0)
  • 2021-01-26 01:38
    In [6]: from itertools import chain
    
    In [7]: lis=[[[151.68694121866872]], [[101.59534468349297]], [[72.16055999176308]]]
    
    In [8]: list(chain(*(chain(*lis))))
    
    Out[8]: [151.68694121866872, 101.59534468349297, 72.16055999176308]
    
    0 讨论(0)
  • 2021-01-26 01:40

    There isn't a better way, this is the most recommended way. See official recipes

    def flatten(listOfLists):
        "Flatten one level of nesting"
        return chain.from_iterable(listOfLists)
    
    0 讨论(0)
  • 2021-01-26 01:49

    You don't need to convert the itertools.chain object (an iterable) into a list:

    resultArray= list(chain.from_iterable(list(chain.from_iterable(exampleArray))))
    # could be rewritten as
    resultArray= list(chain.from_iterable(chain.from_iterable(exampleArray)))
    

    .

    You could write a deepness function using recursion:

    def deep_chain_from_iterable(it, n):
        if n == 0:
            return list(it)
        else:
            return deep_chain_from_iterable(itertools.chain.from_iterable(it),n-1)
    
    deep_chain_from_iterable(exampleArray, 2)
    
    0 讨论(0)
  • 2021-01-26 02:00

    For fixed level of depth (as in example) you can just sum enough times:

    sum(sum(listoflistsoflists, []), [])
    
    0 讨论(0)
提交回复
热议问题