组 合 数 据 类 型
组合数据类型:计算机不仅可以对单个变量表示的数据进行处理,通常情况下,计算机更需要对一组数据进行批量处理。
这种能够表示多个数据的类型称为组合数据类型。
Python中最常用的组合数据类型有3类,分别是集合数据、序列数据和映射数据。
一、集合类型({})
1.1 基础概念
1、定义
集合是元素的无序组合,其类型用大括号{ }表示,没有索引和位置的概念,集合中元素可以动态增加或删除。(可变元素)
集合类型是一个元素集合,元素之间无序,相同元素在集合中存在唯一存在。
2、集合中元素的特点:
①集合元素不可重复,元素类型只能是固定数据类型,而列表、字典和集合类型本身都是可变数据类型,所以不能作为集合的元素出现。
②无序
a.集合中元素是无序的,集合输出顺序与定义顺序可以不一致。
b.集合元素间没有顺序,不能比较,不能排序。
3、集合类型的标记:type()函数返回的集合标记为 ’set’ 。
4、集合的创建
4.1 创建方式:①用set()函数创建;②直接赋值创建
4.1.1 用set()函数创建集合类型
①set(x)函数可以根据参数x创建集合类型,要求参数x是组合数据类型。
②空集:set()
4.1.2 直接赋值创建
赋初值方法利用{}大括号创建集合。需要注意,由于集合和字典类型都用大括号标记,采用大括号方式创建时,必须赋初值,不能创建空集合。
注意:set()函数只接受1个参数,因此会分解该参数,形成集合。而{ }可以接受多个参数将输入字符串分解为多个元素,再进行去重,形成集合。
注意:① set(x)函数将其他的组合数据类型变成集合类型,返回结果是一个无重复且排序任意的集合。
②集合类型主要用于元素去重,适合于任何组合数据类型。
1.2 集合类型的操作
集合的操作符:集合类型有4个操作符:
操作符的运算 | 描述 |
S-T | 在S集合但是不在T集合中的元素(差集) |
S&T | 同时在S和T集合中的元素(交集) |
S^T | 在S和T中非共同元素(补集) |
S|T | 包括S和T中所有元素(并集) |
1.3 集合类型的操作函数
集合的类型有一些常用的操作函数或方法,具体如下:
函数或方法 | 描述 |
S.add(x) | 如果数据项x不在集合S中,将x增加到S |
S.remove(x) | 如果x在集合S中,移除该元素;不在则产生KeyError异常 |
S.clear() | 移除S中所有数据,输出结果为:set() |
len(S) | 返回集合S的元素个数 |
x in S | 如果x是S的元素,返回True;否则返回False |
x not in S | 如果x不是S的元素,返回True;否则返回False |
二、序列类型
1.1 基础概念
序列类型是一维元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他。
序列的基本思想和表示方法均来源于数学概念。在数学中,经常给序列起一个名字,例如,n个数的序列S,可以表示为:
S=s0,s1,s2,...,sn-1
当需要访问序列中某个特定值时,只需要通过下标标出 即可。
例如:需要找到序号为2的元素,即通过s2获得。
注意:序列的下角标从0开始编号,通常说第1个元素,指的是序号为0的元素。
由于元素之间存在顺序关系,故序列中可以存在数值相同但位置不同的元素。
python语言中提供了多种序列数据类型,其中比较重要是字符串类型、列表类型和元组类型。
序列类型使用相同的索引体系,即正向递增和反向递减序号。
1.2 操作符和函数
操作符 | 描述 |
in | x in s,如果x是s的元素,返回True;否则False |
not in | x not in s,如果x不是s的元素,返回True;否则False |
+ | 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) | 序列s中第一次出现元素x的位置 |
s.count(x) | 序列s中出现x的总次数 |
1.3 列表类型([ ])
1.列表的定义
列表是包括0个或多个元素的有序序列,属于序列类型。列表可以进行元素增加、删除、替换、查找等操作。
列表没有长度限制,元素类型可以不同,不需要预定义长度。
列表类型用中括号([ ])表示,
也可以通过list(x)函数将集合或字符串类型转换成列表类型。list( )函数可生成空列表。
空列表:list( ) 或 [ ]
2.列表的索引
索引是列表的基本操作,用于获得列表中的一个元素。
3.列表的切片
4.遍历循环(重点)
for <循环变量> in <列表变量>
<语句块>
1.4 元组类型(不可变数据)
定义:python中的元组是有序元素组成的集合,与列表的区别在于,元组是不可变的,一旦定义,就不能修改。元组类型与列表类型相似,都是序列类型。
①元组类型在python语言中表示为:tuple,一般使用小括号和逗号。
②可以使用 tuple() 或者 ( ) 直接初始化元组;
③元组的访问
t = (1,2,3,4,5,6,7)
print(t[2]) #输出3
元组的访问和列表类似,都可以通过索引访问;
④元组修改
由于元组是无法被修改的,因此,元组没有增删改查的方法,这也体现了元组的不可变性;
注意:元组类型一旦定义就不能修改,在编程中不够灵活,同时,元组类型所有操作都可以由列表类型实现,因此,一般编程中,如果需要自定义变量,通常以列表类型替代元组类型使用。
1.5 列表类型的操作函数
列表类型继承序列类型的特点,有一些通用的操作函数,如下:
操作函数 | 描述 |
len(ls) | 列表ls的元素个数(长度) |
min(ls) | 列表ls中最小元素 |
max(ls) | 列表ls中最大元素 |
list(x) | 将x转变成列表类型 |
1.6 列表类型的操作方法
列表类型继承序列类型的特点,有一些通用的操作函数,如下:
操作函数 | 描述 |
ls.append(x) | 在列表ls的最后增加一个元素x |
ls.insert(i,x) | 在列表ls的i位置增加元素x |
ls.clear( ) | 删除ls中的所有元素 |
ls.pop(i) | 将列表ls中的第i项元素取出并从ls中删除该元素 |
ls.remove(x) | 将列表ls中出现的第一个x元素移除 |
ls.reverse( ) | 将列表ls中的元素反转 |
ls.copy( ) | 生成一个新列表,复制ls中所有元素 |