文章目录
4.1 集合
集合中的元素具有唯一,无序,不可改变等特点
4.1.1 集合常量
-
集合常量用大括号表示,也可以用set()函数创建集合对象
-
空集合对象用set()表示,空字典对象用{}表示
-
创建格式
-
x = {value1,value2,...} # 直接使用集合常量 set(value) #set()创建,其中value为可迭代对象,如列表,对象等
-
4.1.2 集合运算
-
求长度:
len()
len(x) # 计算集合中的元素个数
-
判断包含:
in
'a' in x # 判断集合是否包含元素
-
求差集:
-
x - y # 用属于x但不属于y的元素创建新集合
-
求并集:
|
x | y # 用x,y两个集合中的所有元素创建新集合
-
求交集:
&
x & y # 用同时属于x和y的元素创建新集合
-
求对称差:
^
x ^ y # 用属于x但不属于y以及属于y但不属于x的元素创建新集合
-
比较:
<
x < y # 判断子集和超集关系,x是y的子集返回True,否则返回False
4.1.3 集合基本操作
-
复制集合对象
x = {1,2} y = x.copy()
-
为集合添加一个元素
s.add( x ) #将元素x添加到集合s中,如果元素已存在,则不进行任何操作。
-
为集合添加多个元素
s.update( x ) #x可以有多个,用逗号分开
-
删除集合中指定元素
s.remove( x )
-
集合内置方法
方法 描述 add() 为集合添加元素 clear() 移除集合中的所有元素 copy() 拷贝一个集合 difference() 返回多个集合的差集 difference_update() 移除集合中的元素,该元素在指定的集合也存在。 discard() 删除集合中指定的元素 intersection() 返回集合的交集 intersection_update() 返回集合的交集。 isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 issubset() 判断指定集合是否为该方法参数集合的子集。 issuperset() 判断该方法的参数集合是否为指定集合的子集 pop() 随机移除元素 remove() 移除指定元素 symmetric_difference() 返回两个集合中不重复的元素集合。 symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 union() 返回两个集合的并集 update() 给集合添加元素
4.1.4 冻结集合
-
冻结集合是一个不可改变的集合
-
冻结集合的输出格式与普通集合不同
>>> x = frozenset #创建冻结集合 >>> print(x) #输出冻结集合
4.2 列表
列表和元组都属于序列,序列支持索引,分片和合并等操作。字符串属于特殊的不可变序列。
4.2.1 列表基本特点和操作
-
列表常量用方括号表示。主要特点如下:
- 列表可以包含任意类型的对象
- 列表是一个有序序列
- 列表是可变的
- 每个列表元素存储的是对象的引用
-
创建列表:列表对象可用列表常量或
list()
函数来创建list1 = [] #创建空列表对象 list2 = list() #创建空列表对象
-
求长度:
len()
len([1,2,3]) # 输出结果为3
-
合并:
+
[1,2] + [3,4] # 输出结果为 [1,2,3,4]
-
重复:
*
[1,2]*3 # 输出结果为 [1,2,1,2,1,2]
-
迭代
>>> x = [1,2,('a','abc'),[12,34]] >>> for a in x: print(a) ... 1 2 ('a','abc') [12,34]
-
关系判断:
in
>>> 2 in [1,2,3] True >>> 'a' in [1,2,3] False
-
索引
>>> x = [1,2,['a','b']] >>> x[0] # 输出列表的第一个数据 1 >>> x[2] # 输出列表的第3个数据 ['a','b']
-
分片
与字符串类似,可通过分片来获取列表中的连续多个数据,也可以通过分片将连续多个数据替换成新的数据
4.2.2 常用列表方法
-
添加单个数据:
append()
s.append( x ) # 在列表末尾加入一个数据
-
添加多个数据:
extend()
s.extend( xyz ) # 在列表末尾加入多个数据
-
插入数据:
insert()
s.insert( x,'abc' ) # 在x位置插入'abc'
-
按值删除数据:
remove()
s.remove( x ) # 删除指定的值,有重复值则删除第一个
-
按位置删除数据:
pop()
s.pop( x ) # 删除偏移量为x的对象
-
用del语句删除:
del x[0] # 删除第一个数据
-
删除全部数据:
clear()
s.clear() #删除s列表的全部数据
-
复制列表:
copy()
x = [1,2,3] s = x.copy()
-
列表排序:
sort()
s.sort() # 若列表对象全为数字则从小到大排序;全为字符串则按字典序
4.3 元组
元组可以看作是不可变的列表,它具有列表的大多数特点。
4.3.1 元组的特点和操作
-
元组的主要特点
- 元组可以包含任意类型的对象
- 元组是有序的。元组中的对象可通过位置进行索引和分片
- 元组的大小不能改变,即不能为元组添加对象,也不能删除元组中的对象
- 元组中的对象不能改变
- 元组中存储的是对象的引用,而不是对象本身
-
创建元组:可以用元组常量或者
tuple()
方法来创建元组对象tup1 = () # 创建空元组对象 tup2 = tuple() # 创建空元组对象 tup3 = (2,) # 包含一个对象的元组,不能缺少逗号
-
求长度:
len()
用于获取元组长度len( (1,2,3,4) ) # 结果为4
-
合并:加法运算
+
可用于合并多个元组(1,2) + (3,4) # 结果为(1,2,3,4)
-
重复:乘法运算
*
可用于合并多个重复的元组(1,2)*2 # 结果为(1,2,1,2)
-
迭代
>>> for x in (1,2.5,'abc',[1,2]):print(x) ... 1 2.5 abc [1,2]
-
关系判断:
in
判断元组是否包含某个值2 in (1,2) # 结果为 True 5 in (1,2) # 结果为 False
-
索引和分片
4.3.2 元组的方法
count()
:返回指定值在元组中出现的次数index(value, [start,[end]] )
:用于在元组中查找指定值
4.4 字典
字典是一种无序的映射集合,包含一系列键值对。
4.4.1 字典的特点和操作
-
字典的基本特点
- 字典的键名称通常采用字符串,也可以用数字,元组等不可变的类型数据
- 字典的值可以是任意类型
- 字典也称为关联数组或散列表,它通过键映射到值。字典是无序的,它通过键来访问映射的值,而不是通过位置来索引
- 字典属于可变映射,可修改键映射的值
- 字典的长度可变,可为字典添加或删除键值对
- 字典可以任意嵌套,即键映射的值可以是一个字典
- 字典存储的是对象的引用,而不是对象本身
-
创建字典:可通过多种方式来创建字典
dict1 = {} # 创建空字典 dict2 = dict() # 创建空字典
-
求长度:
len()
返回字典长度,即键值对的个数 -
关系判断:
in
判断字典是否包含某个键 -
索引:字典可通过键来索引其映射的值
4.4.2 字典常用方法
clear()
:删除全部字典对象copy()
:复制字典对象get(key [,default])
:返回键key映射的值。如果key不存在,返回空值。可用default参数指定键不存在时的返回值pop(key [,default])
: 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。popitem()
: 随机返回并删除字典中的最后一对键和值。updata(other)
:为字典添加键值对
4.4.3 字典视图
items()
:返回键值对视图keys()
:返回键视图values
:返回值视图
键视图支持各种集合运算,键值对视图和值视图不支持集合运算
4.5 迭代和列表解析
4.5.1 迭代
字符串,列表,元组和字典等对象均支持迭代操作,可使用迭代器遍历对象
- 迭代是Python最强大的功能之一,是访问集合元素的一种方式
- 迭代器是一个可以记住遍历的位置的对象
- 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退
- 迭代器有两个基本的方法:
iter()
和next()
4.5.2 列表解析
-
列表解析的基本结构
表达式 for 变量 in 可迭代对象 if 表达式
-
带条件的列表解析
list1 = [x + 10 for x in range(10) if x % 2 == 0] # 用if筛选偶数 print("list1 = ", list1) # list1 = [10, 12, 14, 16, 18]
-
多重嵌套解析
list2 = [x + y for x in (10, 20) for y in (1, 2, 3)] print("list2 = ", list2) # list2 = [11, 12, 13, 21, 22, 23]
-
列表解析生成元组
tup1 = tuple(x * 2 for x in range(5)) print("tup1 = ", tup1) # tup1 = (0, 2, 4, 6, 8)
-
列表解析生成集合
set1 = {x for x in range(10)} print("set1 = ", set1) # set1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
-
列表解析生成字典
dict1 = {x: ord(x) for x in 'abcd'} print("dict1 = ", dict1) # dict1 = {'a': 97, 'b': 98, 'c': 99, 'd': 100}