5

複数の配列レイヤーにネストできるデータがある場合があります。

場合によっては、次のようにデータをネストできます。

[ [ 'green', 'blue', 'red' ] ]

別の時に

[[[ ['green', 'blue', 'red' ] ]]]

配列を抽出して返したいのですが、これを行う最もpythonicな方法は何ですか?

4

3 に答える 3

3

Numpy はいつものようにあなたの親友です :

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

numpy 関数squeeze()は、配列内で 1 であるすべての次元を削除します。

于 2012-11-28T16:58:02.813 に答える
3
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]]
于 2012-11-28T16:40:13.563 に答える
0

再帰的な解決策:

def strip(a):
    if len(a)==1:
        if isinstance(a[0], list):
            a=a[0]
            return strip(a)
        else:
            return a
    return a
于 2012-11-28T16:42:36.967 に答える