首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中,为什么s*3比s+s+s快?

在python中,为什么s*3比s+s+s快?
EN

Stack Overflow用户
提问于 2015-07-08 14:01:07
回答 2查看 395关注 0票数 3

我浏览了谷歌的python简介,发现s * 3s + s + s更快,而sstring类型的。

有什么原因吗?

我在谷歌上搜索发现了which is faster s+='a' or s=s+'a' in python。但这并没有帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-08 14:05:03

因为s * 3是一个操作,而s + s + s是两个操作;它实际上是(s + s) + s,创建了一个额外的字符串对象,然后被丢弃。

通过使用dis查看每个字节码生成的字节码,可以看出两者之间的区别:

s + s + s

代码语言:javascript
复制
  3           0 LOAD_FAST                0 (s)
              3 LOAD_FAST                0 (s)
              6 BINARY_ADD          
              7 LOAD_FAST                0 (s)
             10 BINARY_ADD          
             11 RETURN_VALUE    

s * 3

代码语言:javascript
复制
  3           0 LOAD_FAST                0 (s)
              3 LOAD_CONST               1 (3)
              6 BINARY_MULTIPLY     
              7 RETURN_VALUE    
票数 18
EN

Stack Overflow用户

发布于 2015-07-08 14:05:11

您也可以在这里亲自测试:

代码语言:javascript
复制
import timeit

print(timeit.timeit("string=''; string='s'+'s'+'s'", number=10000))
print(timeit.timeit("string2=''; string2='s'*3", number=10000))

我的猜测是,s*3将其视为一个操作,而s+s+s则是两个操作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31295017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档