前言

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中集合的基础知识进行了学习和回顾。集合是基本数据类型的序列,在集合学习中重点掌握集合的相关运算:交集、并集、差集、对称差集等,同时还要记住集合的特点:不可变和无序,集合元素的要求:元素的唯一性和元素必须是不可变类型的数据。