一、组合数据类型container objects
组合数据类型container objects:能够表示多个数据的类型
集合类型:集合类型是一个元素集合,元素无序不重不变
序列类型:序列类型是一个元素向量,元素有序可重可变可不变。序列类型的典型代表是列表类型、元组类型、字符串类型(但元组一旦定义,元素就不能变了)
映射类型:映射类型是“键-值”数据项的组合,元素无序不重键不可变值可变可不变,每个元素是一个键值对。映射类型的典型代表是字典类型
集合类型是一个具体的数据类型名称,而序列类型和映射类型是一类数据类型的总称。
不可变数据类型:immutable,如数字、元组、字符串
可变数据类型:mutable,如列表、集合、字典
可迭代对象:iterable,如range()、序列(列表元组字符串)、集合、字典、文件,generator
不可迭代对象:如数字
很多函数的参数以及返回值都是iterable:map(), filter() ,zip() ,range(), dict.keys(), dict.items() 和 dict.values()
二、序列
序列类型:序列类型是一个元素向量,元素有序可重可变可不变。序列类型的典型代表是列表类型、元组类型、字符串类型(但元组一旦定义,元素就不能变了)
- 因为有序,元素就可以相同,元素类型可以不同
- 序列类型是一个基类类型。列表元组字符串都是序列类型的衍生,序列类型的所有操作函数方法在列表元组字符串中都适用,同时列表元组字符串又具有各自的特点:
切片和步长切片:含i,但不含j
min(x), max(x),要求x是相同类型元素,否则异常
三、元组类型
序列类型:序列类型是一个元素向量,元素有序可重可变可不变。序列类型的典型代表是列表类型、元组类型、字符串类型(但元组一旦定义,元素就不能变了)
元组的元素,可以是不可变数据类型,也可以是可变数据类型
但是,元组一旦定义,元素就不能变了
程序会把由逗号分隔的多个值,以元组处理:
元组类型一旦定义,里面的元素就不能改变。
当函数返回多个值时,多个返回值以元组类型返回,实际上返回一个数据类型。
使用切片对元组进行切片,并不改变原先元组的值及顺序,而是生成了一个新的元组。
三、列表类型
序列类型:序列类型是一个元素向量,元素有序可重可变可不变。序列类型的典型代表是列表类型、元组类型、字符串类型(但元组一旦定义,元素就不能变了)
列表可以进行元素的增加、删除、替换、查找等操作,列表没有长度限制,元素类型可以不痛,不需要预定义长度。
使用list(x)创建列表,x必须是iterable,否则异常TypeError
索引时,序号不能超出范围
切片和步长切片:含i,不含j,如果有:,含开头
一般要求j大于i,当i大于等于j时,返回空列表
列表操作函数
len(ls):列表ls的元素个数
min(ls):列表ls中的最小元素,ls中元素类型须相同才能比较
max(ls):列表ls中的最大元素,ls中元素类型须相同才能比较
list(x):将x转变成列表类型,list(x),x须为iterable。如果x是dict,返回的是key组成的列表
list.append(x),在列表list最后增加一个元素x(位置:最后。数量:一个)
如果要在列表最后增加多个元素,可以使用 ls +lt 加号连接
如果要在列表最后增加多个元素,也可以使用ls.extend(lt)
如果要在列表任意位置增加,可以使用list.insert(index, object), object可以是任意类型
list.insert(index, object),在列表序号index位置上增加object,序号index之后的元素序号依次增加。
list.clear(),删除list所有元素,清空列表
list.pop(index=-1),返回列表list中序号为index的元素,并将该元素从列表中删除,无index,默认删除最后一个元素
list.remove(x),删除列表list中第一次出现的x元素
del list[i:j:n],删除列表list中的元素或片段,含i,不含j
list.reverse(),将列表list中的元素逆序翻转。同list[::-1]
list.copy(),复制list,返回一个新列表,是两个不同的列表,更改一个另一个不受影响
ls =lt,直接赋值方式并不能产生新列表,仅是为列表增加一个别名,修改lt,同时也就更改了ls
PS: source python.123