这是更快的s + =' a'或s = s +' a'在python中

时间:2014-12-04 06:08:25

标签: python

s=s+'a'
s+='a'
s.append(a)

上述三个之间有什么区别吗?

我对这些选择感到困惑。

哪个需要在什么时候使用,并且字符串append方法比其他方法更快?

4 个答案:

答案 0 :(得分:3)

简答:两者都没有。这就像问哪个勺子喂得更快?银或塑料?也不是,这取决于使用它的人。

换句话说,这不适用于某种语言。一种语言简单地谈论语法和语义,但不谈论速度,即它指定表达某种东西及其语法的方式,而不是它的速度有多快。

速度是implementation而非language的参数;知道区别。类似的实现可以同时处理s += 'a's = s + 'a'(因此在这样的实现上两者之间没有区别)但是另一个实现可以比另一个实现更快。因此,在谈论速度/效率/性能时,指定正在使用的实现,平台,编译器等至关重要。

CPythonIronPython等是Python language的实现,再次执行此类表达式的速度可能因编译器,平台等而异。措施,不要推测!

答案 1 :(得分:2)

假设s是一个字符串,所需的时间似乎相同:

$ python -m timeit 's="x"; s+="x"'
10000000 loops, best of 3: 0.0607 usec per loop
$ python -m timeit 's="x"; s=s+"x"'
10000000 loops, best of 3: 0.0607 usec per loop

此外,字符串对象没有append()方法。

答案 2 :(得分:1)

您可以随时自行运行测试时间,并检查:

import timeit

print(timeit.timeit("s=''; s+='a'", number=10000))
print(timeit.timeit("s=''; s=s+'a'", number=10000))

两者都给出了类似的结果:

0.000557306000700919
0.0005544929990719538

答案 3 :(得分:-2)

  s= s+'a'

  s += 'a'

  s.append(a) 

查看http://www.skymind.com/~ocrow/python_string/

s.append(a)在这些中更快。那么s需要是一个字符串列表。