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维数组与aliasing.When,我正在变异的列表,它将变异一切。例如 <--点击这里
发布于 2021-12-25 13:01:20
您不需要copy列表,而是可以将其附加到结果列表中;也可以不使用range(dimension_length - 1, -1, -1)直接获取维度,只需像下面这样生成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))https://stackoverflow.com/questions/70477780
复制相似问题