python中连接字符串用join还是+

面试 专栏收录该内容
6 篇文章 0 订阅

join的性能明显好于+。这是为什么呢?
原因是这样的,Python字符串是不可变对象,当用操作符+连接字符串的时候,每执行一次+都会申请一块新的内存,然后复制上一个+操作的结果和本次操作的右操作符到这块内存空间,因此用+连接字符串的时候会涉及好几次内存申请和复制。而join在连接字符串的时候,会先计算需要多大的内存存放结果,然后一次性申请所需内存并将字符串复制过去,这是为什么join的性能优于+的原因。所以在连接字符串数组的时候,我们应考虑优先使用join。

from time import time
def plus_test():
    t = time()
    s = ''
    for i in xrange(1000000):
        s += 'test'
    print(time() - t)
def join_test():
    t = time()
    li = []
    for i in xrange(1000000):
        li.append('test')
    s = ''.join(li)
    print(time() - t)
plus_test()
join_test()

输出:

0.6990399360656738
0.09200525283813477

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值