Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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_Python 3.x - Fatal编程技术网

Python 两行都返回字符串吗?

Python 两行都返回字符串吗?,python,python-3.x,Python,Python 3.x,我目前正在跟踪初学者代码棒轨迹。这两段代码都可以工作。但是,编写以下代码的两种方法之间是否存在根本性的错误/差异 谢谢 def mine(myStr, x): myResult = myStr * x return myResult def codebat(thierStr, i): codeResult = '' for i in range(i): codeResult += thierStr return codeResult

我目前正在跟踪初学者代码棒轨迹。这两段代码都可以工作。但是,编写以下代码的两种方法之间是否存在根本性的错误/差异

谢谢

def mine(myStr, x):
    myResult = myStr * x
    return myResult


def codebat(thierStr, i):
    codeResult = ''
    for i in range(i):
        codeResult += thierStr
    return codeResult
我们可以看到他们给出了相同的结果

mine(string.ascii_letters, 10) == theirs(string.ascii_letters, 10) # --> True
但是,我们可以测试这些函数的时间效率

%timeit mine(string.ascii_letters, 1000)
2.27 µs ± 9.69 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

%timeit theirs(string.ascii_letters, 1000)
202 µs ± 4.24 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
正如您所看到的,
mine
的效率几乎提高了100倍,因为python预先分配了新字符串所需的内存。在
他们的
中,每当字符串长度增加时,它必须保持重新分配内存

我们可以看到他们给出了相同的结果

mine(string.ascii_letters, 10) == theirs(string.ascii_letters, 10) # --> True
但是,我们可以测试这些函数的时间效率

%timeit mine(string.ascii_letters, 1000)
2.27 µs ± 9.69 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

%timeit theirs(string.ascii_letters, 1000)
202 µs ± 4.24 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

正如您所看到的,
mine
的效率几乎提高了100倍,因为python预先分配了新字符串所需的内存。在
他们的
中,每次字符串长度增加时,它都必须不断重新分配内存。

这两个函数都工作并执行相同的操作,但第二个函数具有可怕的时间复杂性,应该避免。我想在第一个函数中,您的意思是
myStr*x
?否则他们不会做完全相同的事情。第一个更像蟒蛇。第二个很糟糕。正如@Aran Fey已经指出的,它的时间复杂性很差。此外,for循环覆盖
i
的值,这样当循环终止时
i
比传递给函数的值小一个。如果该函数中的代码需要(或假定)
i
的原始值,它将丢失。谢谢大家!这两个函数都工作并做相同的事情,但是第二个函数的时间复杂度非常糟糕,应该避免使用。我假设在第一个函数中,您的意思是
myStr*x
?否则他们不会做完全相同的事情。第一个更像蟒蛇。第二个很糟糕。正如@Aran Fey已经指出的,它的时间复杂性很差。此外,for循环覆盖
i
的值,这样当循环终止时
i
比传递给函数的值小一个。如果该函数中的代码需要(或假定)
i
的原始值,它将丢失。谢谢大家!啊,我明白了。谢谢啊,我明白了。谢谢