首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中创建多维数组而不需要额外的库?

在python中创建多维数组而不需要额外的库?
EN

Stack Overflow用户
提问于 2021-12-25 03:23:50
回答 1查看 79关注 0票数 -1
代码语言:javascript
复制
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,我正在变异的列表,它将变异一切。例如 <--点击这里

EN

回答 1

Stack Overflow用户

发布于 2021-12-25 13:01:20

您不需要copy列表,而是可以将其附加到结果列表中;也可以不使用range(dimension_length - 1, -1, -1)直接获取维度,只需像下面这样生成dimensions[::-1]

代码语言:javascript
复制
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))

这可以进一步压缩为列表理解,如

代码语言:javascript
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70477780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档