我正在try 创建一个getitem方法,在该方法中,我可以使用[][]从我创建的元素和数组中获取元素.我遇到的方法是这样的:

def __getitem__(self, item):
        x, y = item 
        return self.twoDim[x][y]

这样做的问题是我只能通过使用元组来访问该数组,如ARRAY[1,0].我想要的是能够做到这一点:数组[1][0].

我不确定如何在getitem方法中传递这两个参数,因为它一次只能接受一个参数.

有什么关于如何让它工作的小贴士吗?谢谢您:)

推荐答案

在Python中,两对方括号表示两倍的索引,因此array[1][0]相当于:

array.__getitem__(1).__getitem__(0)

在一个索引之后,您的twoDim可以返回可以再次索引的对象,因此如果索引只有一个元素,您可以将其直接应用于twoDim:

def __getitem__(self, item):
    if not isinstance(item, tuple):
        return self.twoDim[item]
    x, y = item
    return self.twoDim[x][y]

Python相关问答推荐

opencv Python稳定的图标识别

拆分pandas列并创建包含这些拆分值计数的新列

更改matplotlib彩色条的字体并勾选标签?

使用FASTCGI在IIS上运行Django频道

使用numpy提取数据块

Pystata:从Python并行运行stata实例

ModuleNotFound错误:没有名为Crypto Windows 11、Python 3.11.6的模块

将两只Pandas rame乘以指数

基于字符串匹配条件合并两个帧

如何根据一列的值有条件地 Select 前N个组,然后按两列分组?

python中的解释会在后台调用函数吗?

需要帮助重新调整python fill_between与数据点

手动设置seborn/matplotlib散点图连续变量图例中显示的值

为什么常规操作不以其就地对应操作为基础?

从旋转的DF查询非NaN值

如何在海上配对图中使某些标记周围的黑色边框

在Docker容器(Alpine)上运行的Python应用程序中读取. accdb数据库

如何在验证文本列表时使正则表达式无序?

仅使用预先计算的排序获取排序元素

如何在PythonPandas 中对同一个浮动列进行逐行划分?