我正在寻找一个数据结构,我想知道它是否在python库中实现了(我在Google上找不到……):
是否有一个对象的作用类似于映射,但是是可下标的(并且不复制数据)
例如,是否存在转发__len_()
的数据结构,并且您可以在该数据结构上执行以下操作 ;:
r = subscriptable_map( lambda x: x+1, range(10) )
assert(r[0] == 1)
它是否存在于python库中,还是应该由我自己实现?
我不知道有这种内置的。 您可以使用类和魔术方法来滚动您自己的方法。
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])
注意,这里的第二个参数需要自己是可索引的,这排除了大多数懒惰求值的迭代器。