我想知道.find()
和.index()
在Python中的时间复杂度有什么不同。在做LeetCode时,我注意到,.find()
方法需要的时间明显长于.index()
方法。根据我的理解,这两种方法都应该在O(n)
中运行。我看到的唯一区别是,当您搜索的元素不存在时,.index()
会抛出ValueError。
有人知道这种速度差异是从哪里来的吗?还有,有没有一个文档可以让你找到各种Python方法的时间复杂度?
str.find
和str.index
都只是any_find_slice
的薄包装,它们唯一有意义的区别是在str.index
中添加了以下内容:
if (result < 0) {
PyErr_SetString(PyExc_ValueError, "substring not found");
return NULL;
}
因此,任何感知到的运行时差异如果为真(您没有包含一个显示声明为真的基准测试)必须来自异常处理。