写点什么

关于 Python 中的字符串,我在补充两点,滚雪球学 Python

发布于: 2021 年 03 月 07 日
关于 Python 中的字符串,我在补充两点,滚雪球学 Python

橡皮擦,一个逗趣的互联网高级网虫,新的系列,让我们一起 Be More Pythonic


三、Python 里面的字符串知识补充


Python 中最高频被使用的一个数据类型,就是字符串,本篇博客不在讨论字符串的基本使用,哪些在第一遍滚雪球的时候就已经被强调了,这次在增加 2 个细节的知识点


3.1 字符串是不可变的


字符串是不可变的,对此有一个疑问是下述代码,貌似字符串变量 my_str 发生了改变,但是你可以修改代码,获取一下代码的内存地址,会发现下述代码,其实是新创建了一个同名的字符串。


my_str = "hello "my_str += "world"print(my_str)
复制代码


比较内存地址。


my_str = "hello "print(id(my_str))my_str += "world"print(id(my_str))print(my_str)
复制代码


运行结果如下:


3080162442418864hello world
复制代码


3.2 字符串拼接效率问题


对比下述几段代码比较字符串拼接的效率问题。


import time
# += 写法def m0(): s = ' ' for n in range(0, 100000): s += str(n)
# join 写法def m1(): l = [] for n in range(0, 100000): l.append(str(n)) s = ' '.join(l)
# pythonic 写法def m2(): s = ' '.join(map(str, range(0, 100000)))
start_time = time.perf_counter()m0()end_time = time.perf_counter()print("代码运行时间为:", end_time-start_time)
复制代码


在循环 100000 次的情况下,前 2 份代码消耗时间差异不大,但是 m2 效率高了一些,随着循环次数增大,会发现 m2 逐渐拉开差距,甚至数据到一千万的时候,m0 没有计算出结果,因为电脑原因,卡住了。


  • m0:代码运行时间为: 0.026987474000000004

  • m1:代码运行时间为: 0.025112976000000002

  • m2:代码运行时间为: 0.019118731


从字符串这种数据类型本身出发,join 函数比 += 快,最后一种写法,其实是 map 遍历提高的效率,这点需要注意下,不过第三种写法确实比较 pythonic


3.3 这篇博客的总结


这篇博客,咱们对字符串稍微补充了一点点探索性的知识,简单实用,连续高频学习,适当的休息一下,下篇博客见。


相关阅读


  1. Python 爬虫 100 例教程,超棒的爬虫教程,立即订阅吧

  2. Python 爬虫小课,精彩 9 讲




今天是持续写作的第 <font color="red">96</font> / 100 天。

如果你想跟博主建立亲密关系,可以关注同名公众号 <font color="red">梦想橡皮擦</font>,近距离接触一个逗趣的互联网高级网虫。

博主 ID:梦想橡皮擦,希望大家<font color="red">点赞</font>、<font color="red">评论</font>、<font color="red">收藏</font>。


发布于: 2021 年 03 月 07 日阅读数: 38
用户头像

爬虫 100 例作者,蓝桥签约作者,博客专家 2021.02.06 加入

6 年产品经理+教学经验,3 年互联网项目管理经验; 互联网资深爱好者; 沉迷各种技术无法自拔,导致年龄被困在 25 岁; CSDN 爬虫 100 例作者。 个人公众号“梦想橡皮擦”。

评论

发布
暂无评论
关于 Python 中的字符串,我在补充两点,滚雪球学 Python