Python基础总结(六)(更多字符串和特殊方法)

2016-11-03  本文已影响101人  TryEnough

 Python中创建的不可变的对象(如int和str)创建出来后就不会再改变,为了性能优化,Python使用同一个对象来表示具有相同内容的字符串。例如创建两个相同的字符串变量:

>>> s1 = "test"

>>> s2 = "test"

>>> id(s1)

4337183936

>>> id(s2)

4337183936

可以看到s1和s2在内存中的标示id是同一个。

处理字符串的函数

len函数返回一个字符串中字符的个数

max函数返回字符串中的最大字符

min函数返回字符串中最小字符

字符串下标运算符:[]

字符串是一个字符序列,可以通过下标(从0开始)访问字符串中的一个字符:

s[index]

注意:1、s[-1] = s[-1 + len(s)],表示字符串的最后一个字符。2、字符串是不可变的,不能通过下标去尝试修改字符串中的一个字符。

字符串截取符:[Start: end]

截取从start到end-1部分的字符串,start为空表示0,end为空表示最后一个下标,如果start或end是负数,那么就用len(s)+负数来替换下标。如下例子:

>>> s = "welcome"

>>> s[: 6]

'welcom'

>>> s[3:]

'come'

>>> s[1:-1]   #等于s[1: -1+len(s)] = s[1: 6]

'elcom'

字符串连接符:+、字符串复制符:*

>>> s1="a"

>>> s2="b"

>>> s1+s2

'ab'

>>> 3*s1

'aaa'

字符串包含某个字符串判断:in、not in

>>> s = "welcome"

>>> "come" in s

True

>>> "come" not in s

False

比较字符串

可以使用==、!=、 >、 <、 >=、 <=来比较字符串,Python是比较字符串中从脚标0开始依次向右对应位置的字符进行大小比较的。

迭代字符串

字符串是可迭代的,这意味着可以使用for循环来遍历字符串中的每一个字符,例如:

for ch in s:

    print(ch)

或遍历奇数位

for i in range(0, len(s), 2):

    print(s[i])

测试字符串类型常用函数:

isalnum(): bool        #字符串中至少有一个字符,并且是字母和数字组成就返回true 

isalpha(): bool         #字符串中至少有一个字符,并且是字母组成就返回true

isdigit(): bool           #字符串只含有数字就返回true

isidentifier():bool    #字符串是Python标示符就返回true

islower(): bool         #字符串中至少有一个字符,并全是小写就返回true

isupper(): bool        #字符串中至少有一个字符,并全是大写就返回true

isspace(): bool        #字符串中只包含空格就返回true

搜索字符串:

endswith(s1: str): bool      #如果字符串以子串s1结尾则返回true

startswith(s1: str): bool     #如果字符串以子串s1开头则返回true

find(s1): int                         #返回s1在这个字符串的最低下标,如果不存在返回-1

rfind(s1): int                        #返回s1在这个字符串的最高下标,如果不存在返回-1

count(substring): int         #返回这个子串在字符串中出现的次数

转换字符串:

capitalize(): str  #返回大写首字母的字符串

lower(): str  #将字母都变成小写

upper(): str  #将字母都变成大写

title(): str  #大写每个单词的首字母

swapcase(): str  #将小写字母变成大写,大写字母变成小写

replace(old, new): str  #用新的字符串替代老的字符串

⚠️:这里的转换都是创建了一个新的字符串,因为字符串是不可变的。原来的字符串内容没有变化。

删除字符串两端的空格(包括‘’、\t、\f、\r、\n):

lstrip(): str   #去掉字符串前端的空白字符串

rstrip(): str  #去掉字符串后端的空白字符串

strip(): str  #去掉字符串两端的空白字符串

格式化字符串:

center(width): str  #返回在给定宽度上居中的字符串副本

ljust(width): str  #返回在给定宽度上居左的字符串副本

rjust(width): str  #返回在给定宽度上居右的字符串副本

运算符重载:

Python中的运算符重载思想比较简单,你只需要在你需要重载的地方重写和运算符对应的方法即可。这里提供和运算符对应的方法:

⚠️方法前后都是双下划线

__init__ 构造函数 对象建立:X = Class(args)

__del__ 析构函数 X对象收回

__add__ 运算符+ 如果没有_iadd_,X+Y,X+=Y

__or__ 运算符|(位OR) 如果没有_ior_,X|Y,X|=Y

__repr__,__str__ 打印、转换 print(X)、repr(X),str(X)

__call__ 函数调用 X(*args,**kargs)

__getattr__ 点号运算 X.undefined

__setattr__ 属性赋值语句 X.any = value

__delattr__ 属性删除 del X.any

__getattribute__ 属性获取 X.any

__getitem__ 索引运算 X[key],X[i:j],没__iter__时的for循环和其他迭代器

__setitem__ 索引赋值语句 X[key] = value,X[i:j] = sequence

__delitem__ 索引和分片删除 del X[key],del X[i:j]

__len__ 长度 len(X),如果没有__bool__,真值测试

__bool__ 布尔测试 bool(X),真测试

__lt__,__gt__, 特定的比较 X < Y,X > Y

__le__,__ge__, X<=Y,X >= Y

__eq__,__ne__ X == Y,X != Y

__radd__ 右侧加法 Other+X

__iadd__ 实地(增强的)加法 X += Y (or else __add__)

__iter__,__next__ 迭代环境 I = iter(X),next(I)

__contains__ 成员关系测试 item in X (任何可迭代的)

__index__ 整数值 hex(X),bin(X),oct(X),O[X],O[X:]

__enter__,__exit__ 环境管理器 with obj as var:

__get__,__set__ 描述符属性 X.attr,X.attr = value,del X.attr

__new__ 创建 在__init__之前创建对象

上一篇下一篇

猜你喜欢

热点阅读