在Python中将N维数组展平为1D数组[复制]

zqdjd7g9  于 2023-11-20  发布在  Python
关注(0)|答案(1)|浏览(140)

此问题在此处已有答案

Flatten an irregular (arbitrarily nested) list of lists(52个回答)
11天前关闭
目标:使用Python 3将一个包含N个嵌套列表的数组转换为一个1D数组。
示例数组:ND_array = [1, [2, 3], [4, [5, 6]], 7, [8, 9, [10, 11, 12, [13, [14, 15, 16], 17], 18], 19, 20], 21]将示例数组转换为以下结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
一种不受原始数组维数限制的最优解。

4jb9z9bj

4jb9z9bj1#

一个简单而容易的解决方案,适用于python中的任何N维数组,那就是使用递归。

oneD_array = []

def transform_array(arr):
    for x in arr:
        if type(x) == list:
            transform_array(x)
        else:
            oneD_array.append(x)
    return oneD_array

字符串
ND_array = [1,[2,3],[4,[5,6]],7,[8,9,[10,11,12,[13,[14,15,16],17],18],19,20],21]

print(transform_array(ND_array))

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]


版本2.0:与上述相同的输出

def transform_array(arr, oneD_array):
    for x in arr:
        if isinstance(x, list):
            transform_array(x, oneD_array)
        else:
            oneD_array.append(x)
    return oneD_array

相关问题