Python 3 - 实现多维索引的快速且内存有效的方法是什么?

时间:2015-08-25 21:15:57

标签: python-3.x multidimensional-array indexing python-3.4

我正在编写一个__index__的广义实现,用于我的一些更多分支的课程,我想在这里向人群询问它的智慧。

简而言之,我希望将一组int(n维索引)转换为int(从__index__返回,保持为实例状态)并返回(设置/更改它)(或也许是不变的?)。同样的字符串(' A4',' C17',' CDE42',' CDE42YUP420',' CDE42YUP420DEEP42'等)

无论如何,这是我到目前为止所想的。我知道它目前只是一个骨架,但我认为这有助于解决问题的重点。当我在Idx上工作时,我会更新我的问题。一旦实施得足以开始尝试它的版本,我会得到一些timeit结果。

我很感激任何想法。谢谢!

class Idx:
    __slots__ = 'idx',
    def __init__(self, idx):
        ## Sorry about the if/elif block. It's for brevity
        if isinstance(idx, int):
            self.idx = idx
        elif isinstance(idx, tuple):
            ## idx == (0, 0) | (1920, 1080) | (42, 0, 420) ...
            ... ## Insert magic here
        elif isinstance(idx, str):
            ## idx == 'A0' | 'Z99' | 'C8' ...
            ... ## Insert magic here
        else:
            raise TypeError("What is this crap!?: ", repr(idx))

    def __index__(self):
        return self.idx

    def __iter__(self):
        yield from ...  ## insert magic here

    def __int__(self):
        ## not sure if I should implement int(self)..?
        ## I don't want Python to throw exceptions when I treat
        ## instances as normal ints (ie: not __index__), though
        return self.idx

    def __str__(self):
        return ...  ## insert magic here

    def __repr__(self):
        ## I <3 Recursion
        return "".join(("Idx(", repr(self.idx), ")"))

0 个答案:

没有答案