繁体   English   中英

在没有附加库的情况下在 python 中创建多维数组?

[英]Create a multidimensional array in python without additional library?

def create_nd_array(dimensions, value):
"""Function will create a N-dimensional array.
    A N-dimensional array will be filled by the value being passed to the function.
Parameter:
Input:
    value(int or bool or string): Newly formed N-dimensional array will contain this particular value.
    dimensions(tuple): tuple indicating dimensions of newly formed N-dimensional array.
Output:
    array_nd(N-dimensional array): a N-dimensional array  of values."""
dimension_length = len(dimensions)
array_nd = value
for index in range(dimension_length - 1, -1, -1):
    dimension = dimensions[index]
    array_nd = [array_nd for _ in range(dimension)].copy()
return array_nd

我已经写了上面的代码。 这将创建一个带有别名的 N 维数组。当我改变列表时,它会改变所有内容。 例如别名问题<--点击这里

您无需copy列表,而是可以将 append 到结果列表; 并且代替range(dimension_length - 1, -1, -1) ,您可以直接获取维度而不使用它们的索引,通过 puttng dimensions[::-1]像这样

def create_nd_array(dimensions, value):
    array_nd = []

    for dim in dimensions[::-1]:
        array_nd.append([value for _ in range(dim)])

    return array_nd

print(create_nd_array((2,4,2), 0))

这可以进一步压缩为列表推导式

def create_nd_array(dimensions, value):
    array_nd = [[value for _ in range(dim)] for dim in dimensions[::-1]]
    return array_nd

print(create_nd_array((2,4,2), 0))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM