zoukankan      html  css  js  c++  java
  • 关于 Python 中的字符串补充介绍

      三、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)

      运行结果如下:

      30801624

      42418864

      hello world

      3.2 字符串拼接效率问题

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

      import time

      # += 写法

      def m0():

      s = ' '大连妇科医院 http://xmobile.bhbyby.com/

      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。

  • 相关阅读:
    gitlab配置ssh连接
    java 函数编程之Consumer接口的使用
    一枚程序猿的MacBook M1详细体验报告
    【线上问题排查技巧】动态修改LOGGER日志级别
    【线上排查实战】AOP切面执行顺序你真的了解吗
    阿里巴巴Canal常见问题:重复解析/Filter失效/消费落后
    使用Binlog日志恢复误删的MySQL数据实战
    Git实战技巧:恢复被强制push -f失踪的代码
    一次完整的JVM堆外内存泄漏故障排查记录
    Java线上问题排查神器Arthas快速上手与原理浅谈
  • 原文地址:https://www.cnblogs.com/djw12333/p/14512736.html
Copyright © 2011-2022 走看看