複数の配列レイヤーにネストできるデータがある場合があります。
場合によっては、次のようにデータをネストできます。
[ [ 'green', 'blue', 'red' ] ]
別の時に
[[[ ['green', 'blue', 'red' ] ]]]
配列を抽出して返したいのですが、これを行う最もpythonicな方法は何ですか?
複数の配列レイヤーにネストできるデータがある場合があります。
場合によっては、次のようにデータをネストできます。
[ [ 'green', 'blue', 'red' ] ]
別の時に
[[[ ['green', 'blue', 'red' ] ]]]
配列を抽出して返したいのですが、これを行う最もpythonicな方法は何ですか?
Numpy はいつものようにあなたの親友です :
>>> import numpy as np
>>> a = [[[ ['green', 'blue', 'red' ] ]]]
>>> print np.squeeze(a)
['green' 'blue' 'red']
numpy 関数squeeze()
は、配列内で 1 であるすべての次元を削除します。
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