Python中组合数据类型
组合数据类型为多个同类型或不同类型数据提供单一表示。主要分为3类:序列类型、集合类型和映射类型。
序列类型
序列类型是一维元素向量,元素之间存在先后关系,通过序号访问。
序列类型主要的数据类型时str(字符串)、tuple(元组)、list(列表)。
字符串可以看成是单一字符的有序组合;元组是包含0个或多个数据项的不可变序列类型,元组生成后是固定的,其中任何数据项不能替换或删除;列表则是一个可以修改数据项的序列类型。
元组:元组一旦创建就不能被修改,python中元组采用逗号和圆括号(可选)来表示,生成元组只需要使用逗号将元素隔离开即可。同时一个元组可以作为另一个元组的元素。
color[-1][2]这表示元组color最后一个元素中的第三个元素。如果其元素是另一个元组,那第二个[ ]中就是另一个元素;如果其元素是字符串(数字不可以),那第二个[ ]就是单字符。
当需要访问序列中某个特定值时,只需要通过下标标出即可。由于元素之间存在顺序关系,所以序列中可以存在数值相同但位置不同的元素。
序列类型的通用操作符和函数
序列类型通用操作符:
x in s 如果x是序列s的元素,返回True,否则返回False
x not in s 如果x是序列s的元素,返回False,否则返回True
s + t 连接两个序列s和t
s* n 或 n*s 将序列s复制n次
s[i] 索引,返回s中的第i个元素,i是序列的序号
s[i: j] 或 s[i: j: k] 切片,返回序列s中第i到j以k为步长的元素子序列
序列类型通用函数和方法:
len(s) 返回序列 s 的长度(元素的个数)
min(s) 返回序列 s 的最小元素,s 中元素需要可比较
max(s) 返回序列 s 的最大元素,s 中元素需要可比较
s.index(x) 或s.index(x, i, j) 返回序列 s 从 i 开始到 j 位置中第一次出现元素x的位置
s.count(x) 返回序列 s 中出现x的总次数
集合类型
集合中的元素不可重复,元素类型只能是固定的数据类型,例如整数、浮点数、字符串、元组等。
由于集合是无序组合,它没有索引和位置的概念,不能分片,集合中元素可以动态增加和删除。集合用大括号({})表示,可以用赋值语句生成一个集合。而且集合的打印效果与定义顺序可以不一致。
set(x)函数可以用于生成集合,输入的参数可以是任何组合数据类型,返回结果是一个无重复且排序任意的集合。
集合类型的操作符
集合类型的操作函数或方法
映射类型
映射类型是“键-值”数据项的组合,每个元素是一个键值对,即元素是(key,value),元素之间是无序的。
键(key)表示一个属性,也可以理解为一个类别或项目;值(value)是属性的内容,键值对刻画了一个属性和它的值。
Python中,映射类型主要以字典体现。
列表类型和操作
列表是包含0个或多个对象引用的有序数列,没有长度限制,可自由增删元素,元素类型可以不同,使用灵活。
列表用中括号([])表示,也可以通过list()函数将元组或字符串转换成列表。
color[2][-1]类似于元组查找元素
列表必须通过显示的数据赋值才能生成,简单将一个列表赋值给另外一个列表不会生成新的列表对象,相当于重新命名,改变之前列表元素,之后列表元素也会改变。
与元组一样,列表可以通过for-in语句对其元素进行遍历:
for<任意变量名>in<列表名>:
<语句块>
14个列表类型特有的函数或方法:
❶ls[i]=x————替换列表ls第i个元素为x
❷ls[i:j]=lt————用列表lt替换列表ls中的i到j号元素,不包括第j号元素(下同)
❸ls[i:j:k]————用列表lt替换列表ls中的i到j号以k为步长的元素
❹del ls[i:j]————删除列表第i到j号元素,等价于ls[i:j]=[]
❺del ls[i:j:k]————删除列表ls中的i到j号以k为步长的元素
❻ls+=lt或ls.extend(lt)————将列表lt中的元素增加到列表ls中
❼ls*=n————更新列表ls,ls中的元素重复n次
❽ls.append(x)————在列表ls最后增加一个元素x
❾ls.clear()————删除ls中所有元素
❿ls.copy()————生成一个新列表,复制ls中所有元素
⓫ls.insert(i,x)————在列表ls的第i位置增加元素x
⓬ls.pop(i)————将列表中的第i个元素取出并删除该元素
⓭ls.remove(x)————将列表中出现的第一个元素x删除
⓮ls.reverse()————将列表ls中的元素反转
字典类型和操作
字典是包含0个或多个键值对的集合,没有长度限制,可以根据键索引值的内容。
Python语言中的字典可以通过大括号({})建立,建立模式如下:
{<键1>:<值1>,<键2>:<值2>,…,<键n>:<值n>}
键和值通过冒号连接,不同键值对通过逗号隔开。
字典中键值对的访问模式如下:
<值>=<字典变量>[<键>]
赋值类似:
<字典变量>[<键>]=<值>
直接使用大括号({})可以创建一个空的字典(而非集合)或指定初始值,并通过中括号([])向其增加元素。
字典可以通过for-in语句对其元素进行遍历:
for<变量名>in<字典名>:
<语句块>
由于键值对中的键相当于索引,for循环返回的变量名是字典的索引值;如果需要获得键对应的值,可以在语句块中通过get()方法获得。
9个字典类型的函数和方法: