我为字符范围做了一个小生成器函数:
>>> def crange(start, end):
... for i in range(ord(start), ord(end)+1):
... yield chr(i)
...
Run Code Online (Sandbox Code Playgroud)
然后我可以这样做:
>>> print(*crange('a','e'))
a b c d e
Run Code Online (Sandbox Code Playgroud)
好极了!但这不起作用:
>>> crange('a','e')[::2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'generator' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)
这是有效的,但是O(n),不像range's(1):
>>> 'y' in crange('a','z')
True
Run Code Online (Sandbox Code Playgroud)
这意味着在最大值110,000中搜索字符号109,999大约需要0.35秒.109999 in range(110000)当然是快速的.
那时,我的第一个想法是简单地将范围子类化.不幸:
>>> class A(range):
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: type 'range' is not an …Run Code Online (Sandbox Code Playgroud) python ×1