range(start, stop, step)
在我实际调用它之前,如何计算调用会产生的元素数量。
上下文是我正在实现对对象的切片索引
def __init__(self, impl_object):
self.impl=impl_object # the object that actually holds (or generates) an array of values
def __getitem__(self, key):
if isinstance(key, slice):
(start,stop,step)=key.indices( self.impl.numValues() )
# It would be nice to know how many items I'm dealing with
# here
...snip...
我已经说服自己step>0
len(range(start,stop,step))==(start-stop+step-1)/step
但我不知道如何将其概括为负面步骤。
编辑:我要求(强烈希望)解决方案需要O(1)
时间。