代码之家  ›  专栏  ›  技术社区  ›  Chuck

使用默认值创建多维数组的紧凑方法是什么?

  •  0
  • Chuck  · 技术社区  · 4 年前

    >>> arr = '-'
    >>> for _ in range(4):
    ...     arr = [arr] * 3
    ...
    

    看起来我希望看到默认的,但是更有经验的Python开发人员可能会看到这个问题。

    >>> arr
    [[[['-', '-', '-'], ['-', '-', '-'], ['-', '-', '-']], [['-', '-', '-'], ...
    >>> arr[0][0][0][0] = 5
    [[[[5, '-', '-'], [5, '-', '-'], [5, '-', '-']], [[5, '-', '-'], ...
    

    有没有一种好的方法可以做到这一点,即不让不同的列表指向同一个子列表?

    1 回复  |  直到 4 年前
        1
  •  3
  •   The Big Kahuna    4 年前

    尝试

    arr = [[[['-' for x in range(3)] for y in range(3)] for z in range(3)] for w in range(3)]