【python】join和+操作符有什么区别

欢迎讨论


一、join和+操作符区别及原因

python编程拼接字符串,经常用join和+,它俩拼接字符串的结果是一样的,举个例子:

if __name__ == "__main__":
    a = "hello"
    b = "world"
    print(a + b)
    print("".join([a, b]))

运行结果
但是: join连接效率 > 操作符+连接效率
举例:将999999个“atiaisi”拼接起来

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
def timer(func):
    def func_wrapper(*args, **kwargs):
        from time import time
        start_time = time()
        result = func(*args, **kwargs)
        end_time = time()
        spend_time = end_time - start_time
        print(f"{func.__name__} cost time {spend_time}")
        return result
    return func_wrapper


@timer
def plus_test(str_list):
    res = ""
    for ele in str_list:
        res = res + ele


@timer
def join_test(str_list):
    res = ""
    res = "".join(str_list)
    # print(res)


if __name__ == "__main__":
    str_list = ["atiaisi" for i in range(999999)]
    plus_test(str_list)
    join_test(str_list)

运行结果:
效率提升
可以明显看出join执行速度比+快很多,效率提升了大概190倍。

原因:字符串是不可变的对象,就不在字符串本身做文章了,那就另外开辟空间。

+号在拼接字符串的时候,会先开辟一块空间,把+号左边的字符串和+号右边的字符串合起来放在新开辟的空间内,这样有几个+号,就会开辟几次空间。
加号操作符
join拼接字符串也需要开辟空间,但是会提前算好总共需要开辟多大的空间,一次性把内存申请好,然后把所有的字符串合起来放在这个新的空间中,这样就不用频繁申请空间了。节约空间又节约时间。
join连接
从上面的例子中,可以看到join比+少申请了一块a+b的空间。

二、总结

1、优先使用join拼接字符串。数据量越大,效率差异越明显。

2、从内存消耗上来看,+操作符消耗的内存要比join消耗的内存大。多在中间临时生成的字符串对象占用的内存。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值