Python 返回嵌套在多个数组中的数组的最简单方法

Python 返回嵌套在多个数组中的数组的最简单方法,python,Python,我有一种情况,我有数据,有时可以嵌套在多个数组层 有时数据可以嵌套,如: [ [ 'green', 'blue', 'red' ] ] 其他时间 [[[ ['green', 'blue', 'red' ] ]]] 我想提取数组并返回它,什么是最适合的方法 def get_nested_list(a): if len(a) == 1 and isinstance(a[0], list): return get_nested_list(a[0]) return a

我有一种情况,我有数据,有时可以嵌套在多个数组层

有时数据可以嵌套,如:

[ [ 'green', 'blue', 'red' ] ]
其他时间

[[[ ['green', 'blue', 'red' ] ]]]
我想提取数组并返回它,什么是最适合的方法

def get_nested_list(a):
    if len(a) == 1 and isinstance(a[0], list):
        return get_nested_list(a[0])
    return a
示例:

>>> get_nested_list([[[ ['green', 'blue', 'red' ] ]]])
['green', 'blue', 'red']
>>> get_nested_list([[[[1, 2],[3]]]])
[[1, 2], [3]]
递归解决方案:

def strip(a):
    if len(a)==1:
        if isinstance(a[0], list):
            a=a[0]
            return strip(a)
        else:
            return a
    return a

Numpy一如既往地是您最好的朋友:

>>> import numpy as np
>>> a = [[[ ['green', 'blue', 'red' ] ]]]
>>> print np.squeeze(a)
['green' 'blue' 'red']

numpy函数
squere()
删除数组中的所有1维度。

父列表中还有其他元素吗?或者你只是想剥离多余的嵌套?参见剥离“嵌套”很容易-但我更希望一开始就没有它,即,如果结果不可预测-那么某个地方有一个缺陷需要解决…@JonClements我同意你的做法,一开始没有坏数据,但目前我需要剥离嵌套。这只有在嵌套单个元素时才有用。@AshRj:现在处理多元素列表时比较理智。我假设第一个测试是检查空列表?但是已经有一个检查len(a)==1,它将处理空列表。len(a)==1应该在isinstance检查之前,它才能处理空列表lists@AshRj,在这种情况下,预期的输出是什么?根据程序的状态,您可能希望返回第一个列表或第二个列表。
strip([['a']])->RuntimeError:超过最大递归深度
true关于单个元素列表,我添加了一个实例check@COpythonOP没有指定只有一个元素:),但是,无论如何,这一点是正确的。不要像往常一样同意你最好的朋友的观点,但是+1:)为什么?Numpy过去有没有让你失望过?