s=s+'a'
s+='a'
s.append(a)
上述三个之间有什么区别吗?
我对这些选择感到困惑。
哪个需要在什么时候使用,并且字符串append
方法比其他方法更快?
答案 0 :(得分:3)
简答:两者都没有。这就像问哪个勺子喂得更快?银或塑料?也不是,这取决于使用它的人。
换句话说,这不适用于某种语言。一种语言简单地谈论语法和语义,但不谈论速度,即它指定表达某种东西及其语法的方式,而不是它的速度有多快。
速度是implementation而非language的参数;知道区别。类似的实现可以同时处理s += 'a'
和s = s + 'a'
(因此在这样的实现上两者之间没有区别)但是另一个实现可以比另一个实现更快。因此,在谈论速度/效率/性能时,指定正在使用的实现,平台,编译器等至关重要。
CPython,IronPython等是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需要是一个字符串列表。