Python语法基础系列13-集合

集合(set)

1. 什么是集合

集合是容器型数据类型,将{}作为容器标志里面多个元素用逗号隔开: {元素1, 元素2, 元素3,…}
可变的(支持增删改)、无序的(不支持下标操作)

集合中的元素: 不可变的,唯一的(自带去重)

# 1.空集合
# 注意: {}表示空字典
x = {}
print(type(x))		# <class 'dict'>

# set1是一个空集合
set1 = set()

# 2.集合中的元素
set2 = {1, 2, 'hus', (10, 2)}
print(set2)

# 集合中的元素不可变
# set3 = {[1, 2], 2, 'hus'}    # TypeError: unhashable type: 'list'

# 集合中的元素是唯一的
set4 = {1, 2, 'hus', 1}
print(set4)    # {1, 2, 'hus'}

2. 元素的增删改查

2.1 查 - 获取集合中的元素

集合只能通过遍历一个一个得取出所有的元素,没有办法单独取出指定的一个元素

set5 = {23, 3, 5, 67, 8}
for x in set5:
    print(x)
2.2 增 - 添加元素
  • 集合.add(元素) - 在集合中添加指定元素
  • 集合.update(序列) - 将序列中的元素全部添加到集合中
set5 = {23, 3, 5, 67, 8}
set5.add(100)
print(set5)			# {67, 3, 5, 100, 8, 23}

# 将字符串中的字符全部添加到集合中
set5.update('abc')
print(set5)			# {67, 3, 5, 100, 8, 'b', 'a', 23, 'c'}

# 将字典中所有的key添加到集合中
set5.update({'name': '小明', 'age': 18})
print(set5)			# {67, 3, 5, 100, 'age', 8, 'b', 'name', 'a', 23, 'c'}
2.3 删 - 删除元素
  • 集合.remove(元素) - 删除集合中指定元素,元素不存在报错
  • 集合.discard(元素) - 删除集合中指定元素, 元素不存在不报错
set5 = {67, 3, 5, 100, 'age', 8, 'b', 'name', 'a', 23, 'c'}
set5.remove(100)
print(set5)			# {67, 3, 5, 'age', 8, 'b', 'name', 'a', 23, 'c'}

set5.discard(67)
print(set5)			# {3, 5, 'age', 8, 'b', 'name', 'a', 23, 'c'}
set5.discard(1000)	# 不会报错

3. 相关操作

3.1 in 和 not in

集合的 in 和 not in 判断的是元素是否存在

set5 = {23, 3, 5, 67, 8}
print(8 in set5)
3.2 len 和 set 函数
  • len(集合) - 获取集合中 元素的个数
  • set(序列) - 将指定的序列转换成集合(如果序列是字典是将字典的key作为集合的元素)
list1 = [10, 23, 10, 25, 30, 12, 23]
list1 = list(set(list1))
print(list1)		# [10, 12, 23, 25, 30]

4. 数学集合运算

集合支持数学中的集合运算:并集(|), 交集(&), 差集(-), 对称差集(^), >/<(包含关系)

  • 并集: 集合1 | 集合2 - 将两个集合合并在一起产生一个新的集合

  • 交集: 集合1 & 集合2 - 获取两个集合的公共部分产生一个新的集合

  • 差集:集合1 - 集合2 - 获取集合1中去掉集合2剩下的部分

  • 对称差集:集合1 ^ 集合2 - 获取集合1和集合2合并后去掉公共部分剩下的部分

  • 集合1 > 集合2 - 判断集合1中是否包含集合2

    集合1 < 集合2 - 判断集合2中是否包含集合1

set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8}

# 1)并集: 集合1 | 集合2  ->   将两个集合合并在一起产生一个新的集合
print(set1 | set2)   # {1, 2, 3, 4, 5, 6, 7, 8}

# 1)并集: 集合1 | 集合2  ->   将两个集合合并在一起产生一个新的集合
print(set1 | set2)   # {1, 2, 3, 4, 5, 6, 7, 8}

# 3)差集: 集合1 - 集合2  ->   获取集合1中去掉集合2剩下的部分
print(set1 - set2)    # {1, 2, 3}
print(set2 - set1)    # {8, 7}

# 4)对称差集:集合1 ^ 集合2  ->  获取集合1和集合2合并后去掉公共部分剩下的部分
print(set1 ^ set2)    # {1, 2, 3, 7, 8}

# 5) 集合1 > 集合2  - 判断集合1中是否包含集合2
#    集合1 < 集合2  - 判断集合2中是否包含集合1
set3 = {5, 6, 7, 8, 9}
set4 = {1, 2}
print(set3 > set4)    # False
print(set3 > {5, 6})  # True
print(set3 > {5, 6, 1})   # False
发布了40 篇原创文章 · 获赞 11 · 访问量 1464

猜你喜欢

转载自blog.csdn.net/yuting209/article/details/105218881