前言
Python学习第九条和第十天学习内容:集合、字符串。
具体学习内容涉及概念、相关函数、相关方法、应用
一、集合
1.集合的概念
1.1集合:集合是容器型数据类型;将{}作为容器的标志,里面多个元素用逗号隔开:
{元素1, 元素2, 元素3,…}
空集合:set()
注意:空集合是有意义的
1.2集合的特点:
(1)集合是可变的,支持增删改操作
(2)集合是无序的,不支持下标操作
1.3集合元素的要求:
(1)集合的元素必须是不可变类型的数据;
(2)集合的元素是唯一的。(集合的自动去重功能)
示例:
#空集合
set1 = set()
print(type(set1), len(set1)) # <class 'set'> 0
# 集合无序
set1 = {1, 2, 3, 4, 5}
set2 = {3, 2, 5, 4, 1}
print(set1 == set2) # True
# 集合的元素是不可变类型的数据
r1 = {1, 2, 34, 'steam', (1, 2)}
print(r1) # True
r1 = {1, 2, 34, 'steam', [1, 2]}
print(r1) # 报错 TypeError: unhashable type: 'list'
# 元素是唯一的
set1 = {1, 2, 4, 5, 6, 7, 5, 6, 4}
print(set1) # {1, 2, 4, 5, 6, 7}
2.集合的基本操作
2.1 查:
for 变量 in 集合
注意:获取集合中的元素不支持下标遍历
2.2 增、删
2.2.1增:添加元素
(1)集合.add(元素) — 将元素添加到集合中
集合中添加单个元素,如果元素已存在,则不进行任何操作
(2)集合.update(元素1, 元素2, ......)
集合添加多个元素,元素可以是列表、字典、元组等,元素之间用逗号隔开
示例:
#1)
set1 = {1, 3, 5, 7, 9}
set1.add('奇数')
print(set1) # {'奇数', 1, 3, 5, 7, 9}
#2)
set2 = {1, 2, 3, 4}
set2.update('WTO', 'BAT', ['T', 'w', 123, '我'], {'name': '龙敖天', 'age': 98}, (5, 7))
print(set2)
#{1, 2, 3, 4, 'T', 'O', 'w', 'age', 5, 'B', 7, 'name', 'A', 'W', 123, '我'}
2.2.2删:
(1)集合.remove(元素) — 删除指定元素,元素不存在会报错
(2)集合.discard(元素) — 删除指定元素,元素不存在不会报错
2.3改:
集合不能改,没有改的语法;如果要改就先删除原来的元素,再添加新的元素
2.4集合的in和not in 操作:
成员判断:判断元素是否在集合中存在
x in 集合 —判断元素x是否存在于集合中,如果存在返回True,否则False
x not in 集合 —判断元素x是否不存在于集合中,如果存在返回False,否则True
3.集合的运算(重点)
3.1并集(|):
集合1 | 集合2 —将两个集合合并成一个新的集合
示例:
set1 = {1, 2, 3, 4, 5, 6, 7}
set2 = {5, 6, 7, 8, 9}
print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
3.2交集(&):
集合1 & 集合2 —获取两个集合公共部分产生一个新的集合
示例:
set1 = {1, 2, 3, 4, 5, 6, 7}
set2 = {5, 6, 7, 8, 9}
print(set1 & set2) # {5, 6, 7}
3.3差集(-):
1)集合1 - 集合2 ——获取集合1中不包含集合2的部分产生一个新的集合
2)集合2 - 集合1 ——获取集合2中不包含集合1的部分产生一个新的集合
示例:
set1 = {1, 2, 3, 4, 5, 6, 7}
set2 = {5, 6, 7, 8, 9}
print(set1 - set2) # {1, 2, 3, 4}
print(set2 - set1) # {8, 9}
3.4对称差集(^):
集合1 ^ 集合2 —两个集合合并,去掉两个集合的公共部分产生一个新的集合
示例:
set1 = {1, 2, 3, 4, 5, 6, 7}
set2 = {5, 6, 7, 8, 9}
print(set1 ^ set2) # {1, 2, 3, 4, 8, 9}
3.5子集和真子集:
真子集:
集合1 > 集合2 / 集合2 < 集合1 ——判断集合2是否是集合1的真子集
集合2 > 集合1 / 集合1 < 集合2 ——判断集合1是否是集合2的真子集
子集:
集合1 >= 集合2 / 集合2 <= 集合1 ——判断集合2是否是集合1的子集
集合2 >= 集合1 / 集合1 <= 集合2 ——判断集合1是否是集合2的子集
示例:
set1 = {1, 2, 3, 4, 5, 6, 7}
set2 = {5, 6, 7, 8, 9}
set3 = {1, 2, 3,}
print(set1 > set2) # False
print(set1 > set3) # True
print(set3 < set2) # False
print(set1 >= set3) # True
print(set3 <= set2) # False
3.6计算集合长度:
len(集合) —计算集合长度即计算集合元素的个数
set1 = {1, 3, 5, 7, 9, 11, '奇数'}
print('集合set1的长度为', len(set1)) # 集合set1的长度为 7
4.集合相关方法(部分)
方法 | 描述 |
---|---|
集合.clear() | 清除集合中的所有元素 |
集合.copy() | 拷贝一个集合 |
集合1.union(集合2) | 返回两个集合的并集 |
集合1.intersection(集合2) | 返回两个集合的交集 |
集合1.difference(集合2) | 返回集合1中不包含集合2元素的集合(差集) |
集合.add() | 集合添加指定的元素 |
集合.update() | 集合添加指定的元素(序列) |
集合.remove() | 删除集合指定的元素 |
集合.discard() | 删除集合指定的元素 |
总结
这里主要对Python中集合的基础知识进行了学习和回顾。集合是基本数据类型的序列,在集合学习中重点掌握集合的相关运算:交集、并集、差集、对称差集等,同时还要记住集合的特点:不可变和无序,集合元素的要求:元素的唯一性和元素必须是不可变类型的数据。