字符串切片的时间复杂度是多少?O(k) 或 O(n)

abl*_*ard 4 python string algorithm time-complexity slice

python str slice 的时间复杂度是 O(k) 还是 O(n)?

我正在阅读的答案表明其 O(k) 但我不明白如何。

例如

my_str = "thisismystringfortesting"

sub_str = my_str[3:10]
Run Code Online (Sandbox Code Playgroud)

我理解它只提取 (k) 个字符,但是该操作是否必须在切片之前先将整个字符串转换为列表?我的思考过程是,仅将整个字符串转换为列表将花费 O(n)。除非只有部分字符串被转换成列表?

那么有人可以解释一下 Python 上的字符串切片是 O(k) 还是 O(n) 吗?

非常感谢!

Jac*_*din 7

相关代码在这里,它是 O(k),可以看出第 1628 行

result_buf = PyBytes_AS_STRING(result);
for (cur = start, i = 0; i < slicelength;cur += step, i++) {
        result_buf[i] = source_buf[cur];
}
return result;
Run Code Online (Sandbox Code Playgroud)