Python在对象构造函数中创建具有可变长度的2D数组

汤玛斯·朗恰克

我在创建对象时遇到问题,其中2D数组的长度可变。我不断出错

self.state[i] = listt[i]
IndexError: list assignment index out of range

如果我尝试创建具有2行3列的数组的对象,则它可以工作。如果我尝试创建具有3行3列的对象,它将失败并显示错误。

class node:
    def __init__(self, m, n, listt=None):
        self.not_in_place = -1
        self.m = m
        self.n = n
        self.state = [[m],[n]]
        if listt is not None:
            for i in range(self.m):
              self.state[i] = listt[i] 

start = [[0,1,2],[3,4,5],[6,7,8]] 
node(3, 3, start) # doesn't work


start_2 = [[0,1,2],[3,4,5]] 
node(2, 3, start_2) # work

我究竟做错了什么 ?

阿兹罗

在python中,您不能通过给定大小来初始化具有给定大小的数组,也不需要

要将给定列表分配给state,请执行以下操作将其复制

if listt is not None:
    self.state = list(listt)

它在第二种情况下起作用的原因是,您创建了一个包含2个子列表的列表,因此创建了2个框,当您遍历它们时还可以,并且尝试长度为3时也失败了

state = [[2], [3]]  # [[2], [3]], and not [[,,], [,,]]

如果要初始化为空,如果listt为无,则可以

class node:
    def __init__(self, m, n, listt=None):
        self.not_in_place = -1
        self.m = m
        self.n = n
        self.state = [[]] * m
        if listt is not None:
            self.state = list(listt)

    def __str__(self):
        return str(self.state)

if __name__ == '__main__':
    start = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
    n = node(3, 3, start)
    print(n)  # [[0, 1, 2], [3, 4, 5], [6, 7, 8]]

    n = node(2, 3, None)
    print(n)  # [[], []]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python可变长度2D数组

来自分类Dev

表示Java中可变长度的矩阵(2D数组)的最佳方法?

来自分类Dev

D中不可变长度的可变数组

来自分类Dev

D中不可变长度的可变数组

来自分类Dev

具有可变长度的数组元素的格式输出

来自分类Dev

如何在Powershell中创建可变长度的char数组?

来自分类Dev

从函数返回可变长度数组

来自分类Dev

如何理解python函数中的可变长度参数?

来自分类Dev

结构中可变长度的数组

来自分类Dev

byte []数组以可变长度数组进行构造

来自分类Dev

Python 构造 - 解析可变数量的可变长度记录

来自分类Dev

具有子数组和可变长度的 numpy 关联数组的最佳生成

来自分类Dev

在python中绑定可变长度列表

来自分类Dev

我如何使用javascript中具有相同键的对象在对象中创建对象数组

来自分类Dev

如何使用ncml创建具有可变长度变量的netCDF-4文件?

来自分类Dev

具有可变长度参数的Sql子字符串函数

来自分类Dev

具有GCC标志“ -Wlarger-than = len”的可变长度数组

来自分类Dev

具有一些固定项的可变长度数组的JSON模式

来自分类Dev

具有GCC标志“ -Wlarger-than = len”的可变长度数组

来自分类Dev

如何增加指向具有可变长度数组的结构的指针?

来自分类Dev

如何使用python从1d数组中创建具有3个元素的2d数组

来自分类Dev

如何在C ++中循环遍历具有不同长度的动态2D数组

来自分类Dev

Zig编译器是否将具有comptime可变长度的数组视为可能的零长度数组?

来自分类Dev

构造函数具有参数的对象数组

来自分类Dev

通过函数处理可变长度的二维数组

来自分类Dev

函数返回可变长度的通用数组元组

来自分类Dev

在对象中迭代数组后,为键创建具有单行的数组

来自分类Dev

将具有可变长度列表项的python字典导入熊猫

来自分类Dev

为什么 toHexString 具有可变长度?

Related 相关文章

  1. 1

    Python可变长度2D数组

  2. 2

    表示Java中可变长度的矩阵(2D数组)的最佳方法?

  3. 3

    D中不可变长度的可变数组

  4. 4

    D中不可变长度的可变数组

  5. 5

    具有可变长度的数组元素的格式输出

  6. 6

    如何在Powershell中创建可变长度的char数组?

  7. 7

    从函数返回可变长度数组

  8. 8

    如何理解python函数中的可变长度参数?

  9. 9

    结构中可变长度的数组

  10. 10

    byte []数组以可变长度数组进行构造

  11. 11

    Python 构造 - 解析可变数量的可变长度记录

  12. 12

    具有子数组和可变长度的 numpy 关联数组的最佳生成

  13. 13

    在python中绑定可变长度列表

  14. 14

    我如何使用javascript中具有相同键的对象在对象中创建对象数组

  15. 15

    如何使用ncml创建具有可变长度变量的netCDF-4文件?

  16. 16

    具有可变长度参数的Sql子字符串函数

  17. 17

    具有GCC标志“ -Wlarger-than = len”的可变长度数组

  18. 18

    具有一些固定项的可变长度数组的JSON模式

  19. 19

    具有GCC标志“ -Wlarger-than = len”的可变长度数组

  20. 20

    如何增加指向具有可变长度数组的结构的指针?

  21. 21

    如何使用python从1d数组中创建具有3个元素的2d数组

  22. 22

    如何在C ++中循环遍历具有不同长度的动态2D数组

  23. 23

    Zig编译器是否将具有comptime可变长度的数组视为可能的零长度数组?

  24. 24

    构造函数具有参数的对象数组

  25. 25

    通过函数处理可变长度的二维数组

  26. 26

    函数返回可变长度的通用数组元组

  27. 27

    在对象中迭代数组后,为键创建具有单行的数组

  28. 28

    将具有可变长度列表项的python字典导入熊猫

  29. 29

    为什么 toHexString 具有可变长度?

热门标签

归档