提问者:小点点

有可下标的python地图吗?


我正在寻找一个数据结构,我想知道它是否在python库中实现了(我在Google上找不到……):

是否有一个对象的作用类似于映射,但是是可下标的(并且不复制数据)

例如,是否存在转发__len_()的数据结构,并且您可以在该数据结构上执行以下操作 ;:

r = subscriptable_map( lambda x: x+1, range(10) )
assert(r[0] == 1)

它是否存在于python库中,还是应该由我自己实现?


共1个答案

匿名用户

我不知道有这种内置的。 您可以使用类和魔术方法来滚动您自己的方法。

class SubscriptableMap(object):
    def __init__(self, f, subscriptable):
        self.f = f
        self.subscriptable = subscriptable
    def __getitem__(self, x): #subscripting
        return self.f(self.subscriptable[x])
    def __len__(self):
        return len(self.subscriptable)

m = SubscriptableMap(lambda x: x+1, range(10))
print(len(m))
print(m[0])
print(m[20])

注意,这里的第二个参数需要自己是可索引的,这排除了大多数懒惰求值的迭代器。