繁体   English   中英

在python中展平列表

[英]flatten list in python

我想整理清单:

exampleArray = [[[151.68694121866872]], 
                [[101.59534468349297]], 
                [[72.16055999176308]]]

至:

[151.68694121866872, 101.59534468349297, 72.16055999176308]

现在我正在这样做:

resultArray= list(chain.from_iterable(list(chain.from_iterable(exampleArray))))

即使它有效,我也想知道是否有更好的方法。

怎么样

result = [x[0][0] for x in exampleArray]
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]

没有更好的方法,这是最推荐的方法。 查看官方食谱

def flatten(listOfLists):
    "Flatten one level of nesting"
    return chain.from_iterable(listOfLists)

您无需将itertools.chain对象(可迭代)转换为列表:

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

您可以使用递归编写深度功能:

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)

对于固定深度(如示例),您可以求和足够的次数:

sum(sum(listoflistsoflists, []), [])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM