Oll*_*lu_ 3 python list binary-search python-3.x
例如,我有一个这样的列表:
L = [(0, "test", "value"), (0, "test2", "value2")]
Run Code Online (Sandbox Code Playgroud)
我需要 = bisect_left 每个元组的第一项来查找列表中的索引。但是,如果不事先创建所有这些第一项的列表,我想不出一种方法来做到这一点:
exampleList = [L[i][0] for i in range(len(L))]
有没有其他方法可以做到这一点,因为它有效,但是当我的列表达到 5000 个项目时,它非常慢,我需要一种更快的方法来做到这一点?
Python有一个内置的bisect_left,你可以使用它。您不需要构建整个中间列表,您只需要一个惰性对象来检索元组中该位置的第一项。
一些简单的事情,比如:
class Proxy(object):
def __getitem__(self, item):
return L[item][0]
Run Code Online (Sandbox Code Playgroud)
从 Python 3.10 开始,bisect您可以使用关键函数进行搜索,因此不再需要包装器。在你的情况下,它会是key=operator.itemgetter(0)。
| 归档时间: |
|
| 查看次数: |
1364 次 |
| 最近记录: |