Python中的切片

线性结构特征

​ 可迭代 for ... in

​ 有长度,通过len(x)获取,容器

​ 通过整数下标可以访问元素。正索引、负索引

​ 可以切片

切片

sequence[start:stop]

sequence[start:stop:step]

通过给定的索引区间获得线性结构的一部分数据

start、stop、step为整数,可以是正整数、负整数、零

start为0时,可以省略

stop为末尾时,可以省略

step为1时,可以省略

切片时,索引超过上界(右边界),就取到末尾;超过下界(左边界),取到开头


在序列上使用切片[start:stop],子区间索引范围[start, stop),相当于从start开始指向stop的方向上获取数据

默认step为1,表示向右;步长为负数,表示向左

如果子区间方向和步长方向不一致,直接返回当前类型的"空对象"

如果子区间方向和步长方向一致,则从起点间隔步长取值

id

id(object)

CPython中返回对象的内存地址可以用来判断是不是同一个对象

切片赋值

切片操作写在了等号左边

被插入的可迭代对象写在等号右边

切片赋值用作初始化相当于copy,还可以使用。如果用在替换、插入元素,看似语法比较简洁,但是由于列表是顺序表结构,将会引起数据的挪动,这非常影响性能,应当尽量避免使用

z=list()
z[1:] = (40, 50 ,60, 70)
z
Out[4]: [40, 50, 60, 70]

z[3:] = (20,)
z
Out[6]: [40, 50, 60, 20]

分割

split(sep=None, maxsplit=-1) -> list of strings

​ 从至右

​ sep 指定分割字符串,缺省的情况下空白字符串作为分隔符

​ maxsplit 指定分割的次数,-1 表示遍历整个字符串

​ 立即返回列表

rsplit(sep=None, maxsplit=-1) -> list of strings

​ 从右向左开始切,但是输出的字符串字符不会反

​ sep 指定分割字符串,缺省的情况下空白字符串作为分隔符

​ maxsplit 指定分割的次数,-1 表示遍历整个字符串

​ 立即返回列表

splitlines([keepends]) -> list of strings

​ 按照行来切分字符串

​ keepends 指的是是否保留

​ 行分隔符行分隔符包括\n、\r\n、\r等

a='abc dsc sda'
a.split()
Out[3]: ['abc', 'dsc', 'sda']
a.split('d')
Out[6]: ['abc ', 'sc s', 'a']
a.split('d',0)
Out[10]: ['abc dsc sda']
a.split('d',1)
Out[8]: ['abc ', 'sc sda']
a.split('d',2)
Out[7]: ['abc ', 'sc s', 'a']
a.split('d',3)
Out[9]: ['abc ', 'sc s', 'a']
    
s1 = '\na b  \tc\nd\n'
print(s1)

a b  	c
d

a.splitlines(True)
Out[4]: ['\n', 'a b  \tc\n', 'd\n']
a.splitlines()
Out[5]: ['', 'a b  \tc', 'd']

partition(sep) -> (head, sep, tail)

​ 从至右,遇到分隔符就把字符串分割成两部分,返回头、分隔符、尾三部分的三元组

​ 如果没有找到分隔符,就返回头、2个空元素的三元组

​ sep 分割字符串,必须指定

rpartition(sep) -> (head, sep, tail)

​ 从至左,遇到分隔符就把字符串分割成两部分,返回头、分隔符、尾三部分的三元组

​ 如果没有找到分隔符,就返回2个空元素和尾的三元组

a=','.join('abcd')
print(a)
a,b,c,d
print(a.partition(','))
('a', ',', 'b,c,d')
print(a.rpartition(','))
('a,b,c', ',', 'd')
posted @ 2022-11-23 15:16  厚礼蝎  阅读(48)  评论(0编辑  收藏  举报