Python字符串

以下内容是整理极客时间Python核心技术与实战课程的笔记。

字符串的常用操作

1、Python 的字符串是不可变的
下面的操作,是会出错的

s = 'hello'
s[0] = 'H'

那么如果我们想改变字符串的话,只能通过创建新的字符串来完成,所以,我们向修改字符串,可以采取下面这两种方法。

s = 'hello'
# 第一种 直接用大写的'H',通过加号'+'操作符,与原字符串切片操作的子字符串拼接而成新的字符串。
s[0] = 'H'

# 第二种 直接扫描原字符串,把小写的'h'替换成大写的'H',得到新的字符串。
s = s.replace('h', 'H')

2、优秀的+=操作
使用加法操作符’+='的字符串拼接方法,打破了字符串不可变的特性。
对于下面这个例子,时间复杂度在新的版本(从2.5开始)只有O(n)。

s = ''
for n in range(0, 100000):
    s += str(n)

这个原因是
处理字符串的拼接操作时(str1 += str2),Python 首先会检测 str1 还有没有其他的引用。如果没有的话,就会尝试原地扩充字符串 buffer 的大小,而不是重新分配一块内存来创建新的字符串并拷贝。这样的话,上述例子中的时间复杂度就仅为 O(n) 了。

常用函数

1、join()
表示把每个元素都按照指定的格式连接起来。

l = []
for n in range(0, 100000):
    l.append(str(n))
l = ' '.join(l) 

2、split()
string.split(separator),表示把字符串按照 separator 分割成子字符串,并返回一个分割后子字符串组合的列表。
3、strip()

  • string.strip(str),表示去掉首尾的 str 字符串;
  • string.lstrip(str),表示只去掉开头的 str 字符串;
  • string.rstrip(str),表示只去掉尾部的 str 字符串。

4、find()
string.find(sub, start, end),表示从 start 到 end 查找字符串中子字符串 sub 的位置

字符串的格式化

字符串格式化是指我们使用一个字符串作为模板,模板中会有格式符。这些格式符为后续真实值预留位置,以呈现出真实值应该呈现的格式。字符串的格式化,通常会用在程序的输出、logging 等场景。
第一种格式化:使用最新的string.format() 字符串格式函数与规范。

print('no data available for person with id: {}, name: {}'.format(id, name))

第二种格式化:用 % 来表示,其中 %s 表示字符串型,%d 表示整型等等。

print('no data available for person with id: %s, name: %s' % (id, name))

相关思考题

1、下面的两个字符串拼接操作,哪个更优呢?

# 1
s = ''
for n in range(0, 100000):
    s += str(n)

# 2 
l = []
for n in range(0, 100000):
    l.append(str(n))
s = ' '.join(l)

列表append和join的开销要比字符串+=小。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值