python字符串连接效率问题

在python效率的讨论问题中字符串的连接效率有提过,多数建议使用join来代替"+"进行字符串连接

python中一切皆对象 字符串对象就是c api中得stringobject.c看python源码的objects文件可以找到

1."+"。使用加号连接2个字符串会调用静态函数string_concat(register PyStringObject *a ,register PyObject * b),在这个函数中会开辟一块大小是a+b的内存的和的存储单元,然后将a,b字符串拷贝进去,试想一下,如果是n个字符串相连  那么会开辟n-1次内存,是比较耗费资源的

2.对于使用join函数 "".join([a,b])  会调用string_join函数  会计算列表的长度  一次分配一块内存然后拷贝,所以n个字符串相连 开辟内存的次数是1次

所以如果只有2个相连效率区别不大  但是数据多了就会有问题

加点东西(笔记)  python与c语言在创建变量时候的不同

1。整数,python有小整数缓冲池  有一个范围  当定义一个整数a=3.然后删除这个整数使用b=3发现a,b的地址一样的 再使用 c = 1000023执行上面的操作我们发现2个数的地址不一样  小整数缓冲池

2。python中定义一个字符串s = "hello",g = "hello"后 ,s,g的地址相同 ,c语言定义char a[5] = "hello",char b[5] = "hello" ,a和b的字符串地址不同 ,说明又申请了一块内存,python使用的interned机制 首先查询

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 12,229评论 1 118
  • 本节要介绍的是Python里面常用的几种数据结构。通常情况下,声明一个变量只保存一个值是远远不够的,我们需要将一组...
    小黑y99阅读 65,332评论 0 9
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,580评论 0 4
  • 这几天有空,学习了CSS浮动和定位,和大家分享几个问题,希望对学习CSS浮动和定位的同学有所帮助。 一、文档流的概...
    betterwlf阅读 13,400评论 13 45
  • 和自己喜爱的小动物,在美丽的春天,闻着清新的花香,围坐在圆桌前,喝着甜甜的果汁,谈一些开心的事情。
    徐一元阅读 1,326评论 0 2