Python中字符串的迷幻操作-----驻留机制的理解


驻留机制

一定有小伙伴好奇神马是驻留机制呐!~
首先来说说字符串叭

字符串

在python中字符串是基本数据类型,是一个不可变的字符序列

什么是字符串驻留机制呐

仅保留一份相同且不可变的字符串的方法,不同的值被存放在字符串的驻留池中,python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量
举例子:

a='hello python'
b="hello python"
c='''hello python'''
print(a,id(a))
print(b,id(b))
print(c,id(c))

在这里插入图片描述
在这里插入图片描述

驻留机制的优点

当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是比较影响性能的

需要字符串拼接时建议使用str类型的join方法,而非+,因为join()方法是先计算出所有字符中的长度,然后再拷贝,只new一次对象,效率比+更高效

字符串查询操作

在这里插入图片描述

s='hello,Python'

#查询操作
print(s.index('h'))#不存在会报错ValueError
print(s.rindex('h'))

print(s.find('a'))
print(s.rfind('h'))

在这里插入图片描述

字符串大小写转换操作

在这里插入图片描述

#大小转换
a='Hello,HeDengHui'
print(a.upper())#全部大写
print(a.lower())#全部小写
print(a.swapcase())#大写->小写,小写->大写
print(a.capitalize())#第一个字符大写,其余字符小写
print(a.title())#每个单词的第一个字符转换为大写

在这里插入图片描述

字符串内容对齐操作

在这里插入图片描述

#内容对齐
b='hello,Python'
print(b.center(20,'*'))
print(b.ljust(20,'*'))#左对齐,右添加'*'
print(b.rjust(20,'*'))#右对齐,左添加'*'
print(b.zfill(20))#右对齐,一个参数自动补充0
#特殊:
c='-110110'
print(c.zfill(10))

在这里插入图片描述

字符串的切割操作

在这里插入图片描述

#切割操作
d='hello world python'
d1='hello|world|python'
#左切割
print(d.split())
print(d1.split(sep='|'))
print(d1.split(sep='|',maxsplit=1))
#右切割
print(d.rsplit())
print(d1.rsplit(sep='|'))
print(d1.rsplit(sep='|',maxsplit=1))

在这里插入图片描述

字符串判断的方法

在这里插入图片描述

#判断字符串是不是合法的标识符
print("1.","hello,world".isidentifier())
#判断字符串是不是都由空白字符组成(回车,换行符,水平制表符)
print("2.",'\t'.isspace())
#判断字符串是否是全部字母组成
print('3.','hello123'.isalpha())
#判断字符串是否全部由十进制数字组成
print('4.','123'.isdecimal())
#判断字符串是否全部是数字组成
print('5.','123hello'.isnumeric())
#判断字符串是否全部是由字符串和数字组成
print('6.','123hello'.isalnum())

在这里插入图片描述

字符串的替换合并操作

在这里插入图片描述

a='hello,Python'
print(a.replace('hello','hi'))
lst=["hello","world","python"]
print('!'.join(lst))
print(''.join(lst))

在这里插入图片描述

字符串比较

在这里插入图片描述

字符串的切片操作

字符串不具备增删查改等操作
切片操作将产生新的对象
在这里插入图片描述

s='hello,Python'
print(s[:5])
print(s[::2])#[x:y:z]x代表起始位置,y代表结束位置,z代表步数间隔

在这里插入图片描述

字符串格式化

  • %作占位符
name='xiaobai'
age=21
# %作为占位符
print("我的名字叫%s,今年%d" % (name,age))
  • {}作占位符
name='xiaobai'
age=21
# {}作为占位符
print("我的名字叫{0},今年{1}".format(name,age))
  • f-string作占位符
name='xiaobai'
age=21
# f-string
print(f"我的名字叫{name},今年{age}")

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Hedenghui777/article/details/118221002