Python 2D数组列表索引必须是整数或切片,而不是元组

2024-09-29 01:21:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图学习Python2D数组,我试图添加到一个空数组中,但得到了错误list indices must be integers or slices, not tuple

我用Java编写了我想做的事情,并试图将其转换为Python

我的Java代码:

Object[][] memoryArray = new Object[256][17];

        int memoryRow, memoryCol;
        int MBR = 12;
        int addr = MBR;
        memoryRow = addr / 16;
        memoryCol = addr % 16 + 1;
        memoryArray[memoryRow][memoryCol] = " "+Integer.toString(MBR);
        for (Object element: memoryArray) {
            System.out.println(element);
     }

我的Python代码:

memArray = [[None], [None]]
MBR = 55
address = MBR 
memR = (address / 16)
memC = (address % 16 + 1)
memArray[[memR], [memC]] = " " + str(MBR)

如果有人能给我一些关于如何在Python中正确实现这个逻辑的建议?我不确定错误试图表明什么

我还想知道使用Numpy阵列是否会更好


Tags: 代码noneobjectaddress错误数组elementjava
2条回答

我认为您想要的是memArray[memR][memC] = " " + str(MBR),但它的方式不起作用,因为1)您必须确保memR是整数,2)因为您的列表是空的

这里也是Java新手,但让我们一起尝试翻译:

memArray = [[None], [None]]

不是的Python等价物

Object[][] memoryArray = new Object[256][17];

相反:

memArray = [[None for _ in range(17)] for _ in range(256)]

# Java
memoryArray[memoryRow][memoryCol] = " "+Integer.toString(MBR);

直接翻译为:

memArray[memR][memC] = " " + str(MBR)

最后,虽然Numpy数组可能有助于对Python列表进行高级索引,但如果您使用的是字符串/对象,则计算效率不会有太大提高

相关问题 更多 >