天天看点

python中的set集合详解

一、集合简介

  • 集合的表现形式:set
  • 集合与列表很相似,区别如下:

    。 集合中的元素必须为不可变对象

    。 集合中不能出现重复的元素,即若有重复的元素则不会出现

    。 集合中的元素是无序的

  • 集合的用途:
    • 1、可以运用集合去重,方法为将列表加入到集合中,然后进行遍历,最后打印出去重后的结果即可;
    2、运用集合可以进行关系测试,例如,求差集、并集。

二、集合的一些操作

2.1 set()

set() 函数可以用来创建集合

my_set = set({})
print(my_set, type(my_set))
#结果为 set() <class 'set'>      
set1 = set([1, 2, 3])
set2 = set('hello')
set3 = set({'姓名': 'zqc', '性别': '女'})
print(set1, type(set1))
print(set2, type(set2))
print(set3, type(set3))
#结果为 
{1, 2, 3} <class 'set'>
{'h', 'o', 'l', 'e'} <class 'set'>
{'性别', '姓名'} <class 'set'>      

2.2 通过索引取值

  • 因为集合本身是无序的,所以不能直接通过索引取值
  • 先将集合转化为列表,转化后的列表可以通过索取值
my_set = set([1, 2, 3])
print(list(my_set)[1])
#结果为 2      

3.2 in、not in

  • 判断指定元素是否在集合中
  • 返回布尔类型

3.3 len()

  • len() 用来获取集合长度,即集合中有几个元素
  • 返回一个 int 类型

3.4 add()

  • add() 用来向集合中添加一个元素
my_set = {11, 22, 33}
my_set.add(44)
print(my_set)
#结果为 {33, 11, 44, 22}      

3.5 update()

  • update() 用来将一个集合中的元素添加到另一个集合中
my_set = {11, 22, 33}
your_set = {44}
my_set.update(your_set)
print(my_set)
#结果为 {33, 11, 44, 22}      

3.6 pop()

  • pop() 用来随机删除集合中的一个元素
  • pop() 有返回值
my_set = {11, 22, 33}
d = my_set.pop()
print(d)
print(my_set)
#结果为 
33
{11, 22}      

3.7 remove()

  • remove() 用来删除一个指定的元素
my_set = {11, 22, 33}
my_set.remove(22)
print(my_set)
#结果为 {33, 11}      

3.8 clear()

  • clear() 用来清空集合
my_set = {11, 22, 33}
my_set.clear()
print(my_set)
#结果为 set()      

三、集合的运算

3.1 交集 &

  • 返回一个集合
  • 所有集合公共的区域
my_set = {1, 2, 3, 4, 5}
your_set = {3, 4, 5, 6, 7}
print(my_set & your_set)
#结果为 {3, 4, 5}      

3.2 并集 |

  • 返回一个集合
  • 所有集合除去不可重复后的相加
my_set = {1, 2, 3, 4, 5}
your_set = {3, 4, 5, 6, 7}
print(my_set | your_set)
#结果为 {1, 2, 3, 4, 5, 6, 7}      

3.3 差集 -

  • 返回的是一个集合
  • 集合除去公共的部分
my_set = {1, 2, 3, 4, 5}
your_set = {3, 4, 5, 6, 7}
print(my_set - your_set)
print(your_set - my_set)
#结果为
{1, 2}
{6, 7}      

3.4 异或 ^

  • 返回的是一个集合
  • 异或为不相交的部分
my_set = {1, 2, 3, 4, 5}
your_set = {3, 4, 5, 6, 7}
print(my_set ^ your_set)
#结果为 {1, 2, 6, 7}      

3.5 集合间的关系 ≤、<、≥、>

  • 判断一个集合是否是另一个集合的子集:<=
  • 判断一个集合是否是另一个集合的真子集:<
  • 判断一个集合是否是另一个集合的超集:>=
  • 判断一个集合是否是另一个集合的真超集:>
  • 返回布尔类型