组合数据类型
- 序列类型——元素向量
- 集合类型——元素集合
- 映射类型——“键-值数据项的组合”
序列类型(字符串、元组、列表)
- 12个通用的操作符和函数
x in s | 若x是s的元素,则返回True,反之Fales |
---|---|
x not in s | 若x不是s的元素,则返回True,反之Fales |
s+t | 连接s和t |
s * n或n * s | 将序列s复制n次 |
s[i] | 索引;返回序列的第i个元素 |
s[i:j] | 分片;s中i到j个元素(不含j) |
s[i:j:k] | 步骤分片:s中i到j以k为步长的子序列 |
len(s) | s的个数(长度) |
min(s) | s的最小元素 |
max(s) | s的最大元素 |
s.index(x[,i[,j]]) | s中从i开始到j位置中第一次出现x的位置 |
s.count(x) | 序列中x出现的次数 |
- 元组(一旦创建不能被修改)
>>>creature=“cat”,“dog”,“tiger”
>>>creature
(‘cat’,‘dog’,‘tiger’)
>>>color=(“red”,“4352”,creature)
>>>color
>>>(‘red’,‘4352’, (‘cat’,‘dog’,‘tiger’))
>>>color[1]
‘4352’
>>>color[-1][2]
‘tiger’
集合类型
集合类型:包含0个或多个数据项的无序组合
哈希运算:可将任意长度的二进制映射为较短的固定长度的二进制值
集合:无序,没有缩印和位置的概念,不能分片,用{}表示,可以过滤掉重复的元素
set函数——生成集合
>>> W=set(“apple”)
>>> W
{‘e’, ‘p’, ‘a’, ‘l’}
集合类型的操作符(10个)
s-t或s.difference(t) | 返回一个新集合,包括在集合s中但不在集合t中的元素 |
---|---|
S-=T或Sdifference_update(T) | 更新集合S,包括在集合S中但不在集合T中的元素 |
S&T或S intersection | 返回一个新集合,包括同时在集合S和T中的元素 |
S&=T或 Sintersection_update(T) | 更新集合S,包括同时在集合S和T中的元素 |
S^T或S Symmetric(T) | 返回一个新集合,包括集合S和T中的元素,但不包括同时在其中的元素 |
s.symmetric_difference_update(T) | 更新集合S,包括集合S和T中的元素,但不包括同时在其中的元素 |
S | T或S.union(T) | 返回一个新集合,包括集合S和T中的所有元素 |
S |=T或S.update(T) | 更新集合S,包括集合S和T中的所有元素 |
S<=T或S.issubset(T) | 如果S与T相同或S是T的子集,返回True,否则返回False,可以用S<T判断S是否是T的真子集 |
S>=T或 S issuperset(T) | 如果S与T相同或S是T的超集,返回True.否则返回False,可以用S>T判断S是否是T的真超集 |
集合类型的操作函数或方法(10个)
S.add(x) | 如果数据项x不在集合S中,将x增加到s |
---|---|
S.clear | 移除S中的所有数据项 |
S.copy | 返回集合S的一个副本 |
S.pop | 随机返回集合S中的一个元素,如果S为空,产生Keyerror异常 |
S.discard(x) | 如果x在集合S中,移除该元素:如果x不在集合S中,不报错 |
S.remove(x) | 如果x在集合S中,移除该元素:不在则产生.Keyerror异常 |
S.disjoint(T) | 如果集合S与T没有相同元素,返回True |
len(S) | 返回集合S的元素个数 |
x.in.S | 如果x是S的元素,返回.True,否则返回.False |
x.not.in.S | 如果x不是S的元素,返回Tue,否则返回.False |
集合类型主要用于3个场景:成员关系测试|元素去重和删除数据项。
集合类型与其他类型最大的不同在于它不包含重复元素,因此,当需要对一维数据进行去重或进行数据重复处理时,一般通过集合来完成。
映射类型
映射类型是“键-值”数据项的组合,每个元素是一个键值对,即元素是(key,value),元素之间是无序的。键值对( key, value)是一种二元关系,源于属性和值的映射关系。
键(key)表示一个属性,也可以理解为一个类别或项目,值( value)是属性的内容,键值对刻画了一个属性和它的值。键值对将映射关系结构化,用于存儲和表达。在 Python 中,映射类型主要以字典(dd)体现。
列表类型
列表类型的概念
- 列表(list)是包含0个或多个对象引用的有序序列,属于序列类型。与元组不同,列表的长度和内容都是可变的,可自由对列表中的数据项进行增加、删除或替换。列表没有长度限制,元素类型可以不同,使用非常灵活。
- 由于列表属于序列类型,所以列表也支持成员关系操作符(in)、长度计算函数(len())、分片([ ])。列表可以同时使用正向递增序号和反向递减序号,可以采用标 准的比较操作符(<、<=、==、!=、>)进行比较,列表的比较实际上是单个数据项的逐个比较。
- 列表用中括号([ ])表示,也可以通过list()函数将元组或字符串转化成列表 直接使用 list()函数会返回一个空列表,例如:
>>>color ls=[425,“BIT”,[10,“CS”],425]
>>>color ls
[425, ‘BIT’, [10, ‘CS’], 425]
>>>color ls[2][-1][0]
‘C’
列表类型特有的函数或方法(共14个)
函数或方法 | 描述 |
---|---|
Is[i] | 替换列表ls第ⅰ数据项为x |
Is[i:j]=It | 用列表t替换列表ls中第i到第j项数据(不含第j项,下同) |
Is[i:j:k]=It | 用列表替换列表ls中第i到第j项以k为步数的数据 |
deI Is[i:j] | 删除列表ls第ⅰ到第j项数据 |
deI Is[i:j:k] | 删除列表s第i到第j项以k为步数的数据 |
Is+=lt.或Is.extend(t) | 将列表t元素增加到列表ls中 |
Is*=n | 更新列表s,其元素重复n次 |
Is.append(x) | 在列表1s最后增加一个元素x |
Is.clear | 刚除ls中的所有元素 |
Is.copy | 生成一个新列表,复制s中的所有元素 |
Is.inser(i.x) | 在列表s的第i位置增加元素x |
Is.pop(i) | 将列表B中的第项元素取出并删除该元素 |
Is.remove(x) | 将列表中出现的第一个元素x刷除 |
Is.reverse(x) | 列表ls中的元素反转 |