我有一种情况,我的数据有时可以嵌套在多个数组层中。
有时数据可以嵌套如下:
[ [ 'green', 'blue', 'red' ] ]
其他时间
[[[ ['green', 'blue', 'red' ] ]]]
我想提取数组并返回它,这样做最pythonic的方式是什么?
我有一种情况,我的数据有时可以嵌套在多个数组层中。
有时数据可以嵌套如下:
[ [ 'green', 'blue', 'red' ] ]
其他时间
[[[ ['green', 'blue', 'red' ] ]]]
我想提取数组并返回它,这样做最pythonic的方式是什么?
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]]
Numpy 一如既往地是你最好的朋友:
>>> import numpy as np
>>> a = [[[ ['green', 'blue', 'red' ] ]]]
>>> print np.squeeze(a)
['green' 'blue' 'red']
numpy 函数squeeze()
删除数组中所有为 1 的维度。
递归解决方案:
def strip(a):
if len(a)==1:
if isinstance(a[0], list):
a=a[0]
return strip(a)
else:
return a
return a