相关疑难解决方法(0)

如何扩展,模仿或模拟范围功能?

我为字符范围做了一个小生成器函数:

>>> 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

22
推荐指数
2
解决办法
1275
查看次数

标签 统计

python ×1