[python 笔记]:序列详解:字符串,列表,元组,range对象

2021/11/29 17:08:11

本文主要是介绍[python 笔记]:序列详解:字符串,列表,元组,range对象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

序列:

1.索引:

 2.标准类型运算:

(1)值比较:

(2)对象身份比较:is / is not

(3)布尔逻辑运算

3.通用序列类型操作:

(1)切片:

(2)重复(*):

 (3)连接(+)

 (4)判断成员(in /not in)

4.序列类型函数

(1)序列类型转换内建函数

 list(iter):将可迭代对象iter转换成列表

tuple(iter):将可迭代对象iter转换成元组

 str(obj): 将对象obj转换成字符串

(2)序列类型其他内建函数

 字符串:

1.字符串的表示

2.字符串的创建

 3.字符串的不可变

 4.转移字符:​

字符串常用方法​

列表:

1.列表的表示

 2.列表创建:

 列表操作:

列表的方法:

 元组:

元组的创建:

 元组操作:

 元组特性:

 元组的作用:

range对象:


序列:

●序列包括:字符串 ,  列表,  元组,   range对象

●序列对象可迭代:能遍历该对象内部元素

共性内容

1.索引:

序列由多个成员构成,每个成员称为元素,每个元素可以通过索引(index)进行访问 []

对于有N 个元素的序列来说,第1个元素索引从0开始,最后一个元素索引为N-1

最后一个元素索引也可以是-1.倒数第二个元素索引为-2,.....

 

 2.标准类型运算:

(1)值比较:

字符串:按照ASCII码大小依次比较

类型相互兼容的数据才可以进行比较(整数和字符串,列表和元组,字符串和列表等不允许比较)

(2)对象身份比较:
is / is not

 每个对象都用一个唯一的id进行标识,对象身份比较是,比较的是id

bTuple是aTuple的引用,所以id相同

cTuple和aTuple值相同,但是id不同

(is 和==区别)

(3)布尔逻辑运算

and /or /not

3.通用序列类型操作:


(1)切片:


通过切片操作访问某个范围的多个元素

切片结果元素个数endindex-startindex

①.第一个索引值包括在切片中,第二个索引值不包括在切片中

②.startindex缺省,从开头开始遍历;endindex缺省,遍历到结尾

③.steps为负数,逆序遍历

例:

 

(2)重复(*):

如果需要获得一个序列的多个副本,用重复运算符实现

 (3)连接(+)

该操作必须保证参与连接运算的两个序列是同一种类型的

类型不同连接产生异常

 (4)判断成员(in /not in)

判断成员资格时,obj必须和sequence或sequence中元素类型一致

 

4.序列类型函数

(1)序列类型转换内建函数

 list(iter):将可迭代对象iter转换成列表

 

tuple(iter):将可迭代对象iter转换成元组

 

 str(obj): 将对象obj转换成字符串

 注意:

str()参数如果是元组或者列表,其成员是由字符组成的,str()函数的字符串并不能将其中的字符元素合并成一个单词

(2)序列类型其他内建函数

len():返回序列中元素个数

  

sorted():返回一个排好序的副本,原序列对象不变

 

 reversed():返回一个迭代器,元素顺序是原序列nList的逆序

 sum():序列数组求和,要求序列元素类型必须是整型或者浮点型

 

 max()min()

max返回参数的最大值,如果参数只有一个对象,则返回该对象中的最大值元素;如果参数有若干对象,则返回有最大值元素的那个对象

 min与max类似,换成最小

enumerate()

返回一个迭代器,把索引和元素打包成一个元组,如果没有start参数指定起始索引值,则默认从0开始,如果指定,则从指定开始,具体看例子

 zip()

zip()函数拆分重组可迭代对象参数中对应的元素,返回的迭代器中的第i个元素是n个对象的第i个元素组成的元组

 zip像一个拉链,把左排链齿和右排链齿两两组合

 字符串:

1.字符串的表示

单引号,双引号,三引号。

单引号和双引号完全相同;

三引号是连续三个单引号构成,而且三引号标识的字符串可以直接使用单引号或双引号,可以多行表示一个字符串

使用三引号换行输入时,只需要敲回车,但在字符串中实际的储存内容为‘\n’转义字符

 原始字符串操作符r:

python中使用原始字符串操作符r,用于不需要转义字符起作用的地方,特别在正则表达式,文件路径时使用较多

 \n不再表示回车

2.字符串的创建

(1)使用赋值语句,也可以直接输出

 (2)切片+连接从其他字符串中截取片段构造新字符串

 3.字符串的不可变

由于字符串对象类型是不可变的,所以当获得内存空间分配后该内存空间中的字符串内容是不可变的

 

 字符串不能删除其中的字符,如果想要删除所以字符,则可以将一空字符串赋给原字符串变量

 4.转移字符:

字符串常用方法

 s.center(width):返回一个在width参数规定的宽度居中的字符串

 s.count(子串):返回子串在字符串中出现次数

 find(子串,开始,结束):返回子串在【开始,结束)中首次出现的位置,开始结束参数可选,如果不写默认从原字符串中查找,如果找不到返回-1

 index():与find()类似,只不过index()找不到是会报错,具体看例子

 s.join(iter):用字符串s连接可迭代对象的各个元素(必须是字符串)

 

 s.replace(old,new)

原字符串找到old全部替换成new

 spilt():

利用split()方法将输入的多个对象分隔开,默认分隔符是空白分隔符,也可以用其他分隔符

返回一个序列

 strip()去掉字符串头部和尾部的空白字符

列表:


列表是可变的容器对象,且列表中的各元素可以是不同类型

列表可变

 

1.列表的表示

 2.列表创建:

空括号:

 赋值:

包含不同类型的对象

 

 列表解析:生成一个序列并确定类型为列表

内建函数:

list(将其他可迭代对象转换成列表)

重复:
 

 

 列表操作:

序列的操作适合于列表操作:索引,标准值运算,切片,重复,连接

列表的方法:

 

 append()将参数整个添加到列表尾部

 extend():将每个元素单个添加到列表尾部

 extend方法的参数要求是可迭代对象

 

copy():列表的copy方法属于浅拷贝,浅拷贝可以被简单理解为只复制复制父对象,不复制内部子对象

 浅拷贝复制了一级元素,所以a的副本b可以自由修改b[0]值不会影响到a[0],由于没有复制二级元素,所以b[2][0]与a[2][0]是同一对象的引用,因此修改b[2][0]的值也会改变a[2][0]的值

如果想实现深拷贝,可用Copy模块中的deepcopy()函数

 注意:如果使用赋值运算d=a,试图创建一个新的列表d,但此时变量d和a用的是同一个列表对象

pop():

不带参数删除列表最后一个元素

 带参数的pop()删除列表中以参数值为索引值的元素

 remove(x)删除列表中第一个元素值为x的数

reverse():把列表原地翻转

 

 reversed():列表的内建函数,韩慧序列逆序排序后的迭代器,原列表内容不变

字符串和元组没有reverse方法(不可变),但有reversed方法

sort():

不带参数,列表基于值排序(由小到大)

 直接对原列表排序,改变了原列表中元素的顺序

带参数,基于值由大到下排序,具体看例子

 

 按照列表中元素长度排序

 

 元组:

元组用圆括号表示,和列表相似,但元组元素不可变,列表元素可变

元组的创建:

 

元素用逗号隔开赋给一个变量也可以表示元组

 

 元组操作:

序列通用操作和函数对列表一样适用

但元组不可变

(不能适用赋值,不能使用reverse(),sort(),.......)

 但元组可以适用sorted()函数,返回排序新列表,原列表内容不变

 元组特性:

元组的可变元素可变:

索引值为2的元素是个列表,作为元组的元素不能改变,但是作为列表中的元素,可以通过btuple[2][0]改变

 元组的作用:

函数返回一组值,未明确定义列表还是元组

 

range对象:

用range对象生成range对象,执行时一边计算一边产生值(类似一个生成器),生成一个不可变的整数序列

 start是起始值(缺省为0),end是终值(不包含),与切片中的起始值和终值含义相似,

step为步长,缺省为1(不能为0,否则为空序列),如果start end step矛盾是产生空序列

 

 

 

 

 

 

 

 



这篇关于[python 笔记]:序列详解:字符串,列表,元组,range对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程