Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
内置python函数的时间/空间复杂性_Python_Function_Time Complexity_Built In_Space Complexity - Fatal编程技术网

内置python函数的时间/空间复杂性

内置python函数的时间/空间复杂性,python,function,time-complexity,built-in,space-complexity,Python,Function,Time Complexity,Built In,Space Complexity,split/strip/open(内置python函数)的时间/空间复杂度是多少 有人知道我可以在哪里查找这些函数的时间/空间复杂性吗?确切的答案将取决于输入函数的属性。最简单的方法可能是检查这些函数的源代码 让我们看一下源代码,因为代码根据属性运行不同的循环。这是按空格分割的循环 while (maxcount-- > 0) { while (i < str_len && STRINGLIB_ISSPACE(str[i])) i++;

split/strip/open(内置python函数)的时间/空间复杂度是多少


有人知道我可以在哪里查找这些函数的时间/空间复杂性吗?

确切的答案将取决于输入函数的属性。最简单的方法可能是检查这些函数的源代码

让我们看一下源代码,因为代码根据属性运行不同的循环。这是按空格分割的循环

    while (maxcount-- > 0) {
    while (i < str_len && STRINGLIB_ISSPACE(str[i]))
        i++;
    if (i == str_len) break;
    j = i; i++;
    while (i < str_len && !STRINGLIB_ISSPACE(str[i]))
        i++;
while(最大计数-->0){
而(i
在此代码中,函数将查看字符串中的每个字符(除非达到最大计数)。对于大小为n的字符串,最内部的循环将运行n次。时间复杂度为O(n)

逐步遍历字符串中的每个字符

    i = 0;
if (striptype != RIGHTSTRIP) {
    while (i < len) {
        Py_UCS4 ch = PyUnicode_READ(kind, data, i);
        if (!BLOOM(sepmask, ch))
            break;
        if (PyUnicode_FindChar(sepobj, ch, 0, seplen, 1) < 0)
            break;
        i++;
    }
}

j = len;
if (striptype != LEFTSTRIP) {
    j--;
    while (j >= i) {
        Py_UCS4 ch = PyUnicode_READ(kind, data, j);
        if (!BLOOM(sepmask, ch))
            break;
        if (PyUnicode_FindChar(sepobj, ch, 0, seplen, 1) < 0)
            break;
        j--;
    }

    j++;
}
i=0;
如果(striptype!=RIGHTSTRIP){
而(我=i){
Py_UCS4 ch=PyUnicode_读取(种类、数据、j);
如果(!BLOOM(sepmask,ch))
打破
if(PyUnicode_FindChar(sepobj,ch,0,seplen,1)<0)
打破
j--;
}
j++;
}
这使得strip的时间复杂度为O(n)


这就是我们所期望的。没有什么可以循环的。

我不知道你在哪里可以找到这些信息,但是你能不能自己对函数进行计时,然后将结果绘制在图表上,看看它是否是线性的/抛物线的/等等?@RockyLi对这个问题有确切的答案,除非你需要一个经验结果而不是一个正式的陈述。非常感谢!真的帮助我澄清了那些内置函数的时间复杂性!