13.python之集合

集合:是一个无序的、不重复的元素序列

  • 集合中的元素是不可变的类型,所以可以是数字,字符串和元组,但不能是列表和字典,因为它们是可变的
  • 集合中的元素是无序且不重复的
  • 将元素放在{}中,各元素间用逗号隔开
  • 创建空集合使用set(),不能用{},{}是空字典
  • 集合只是用例处理列表或元组的一种临时类型,不适合存储与传输

与列表的区别:

  • 列表是有序的,集合是无序的
  • 列表内容可重复,集合内容不可重复
  • 列表有索引,集合没有索引
  • 列表使用[],集合使用{}
  • 列表用于数据的使用,集合用于数据的交集并集差集的获取

1.去重,集合中有重复元素时会自动去重

例:

a = {1, 'zz', 2, 3, 2, '11', 2}
print("集合是不重复且无序的:",a)

# 若是要对列表去重,可以将其转化成集合再转化成列表即可
b = [1, 1, 2, 3, 2]
print("列表去重前:",b)

b_set = set(b)  # 将列表转化成集合
b_list = list(b_set)  # 将集合转化成列表
print("列表去重后:",b_list)

结果:
在这里插入图片描述

2.运算符in,判断集合中是否包含有某个元素

  • in:集合中是否包含某元素,包含返回True,否则返回False
  • not in:集合中是否不包含某元素,不包含返回True,否则返回False

例:

a = {1, 'zz', 2, 3, 2, '11', 2}

b1 = 1 in a
b2 = 1 not in a
print("集合中是否包含元素1:",b1)
print("集合中是否不包含元素1:",b2)

结果:
在这里插入图片描述

3.迭代输入集合中的内容

例:

a = {666, 'zz', '111', 666}

# 迭代输出集合a中的元素,集合是不重复的所以打印出的是不重复的元素
for i in a:
    print(i)

# 迭代输出集合a中的元素和索引值,使用函数enumerate
for i,j in enumerate(a):
    print(f'索引值:{i},元素为:{j}')

结果:
在这里插入图片描述

4.对集合进行添加和删除操作

  • add函数:集合中添加一个元素,若集合中已存在该元素,则该函数不执行;用法:set.add(item),item是要添加的元素,无返回值
  • update函数:加入一个新的集合(或列表,元组,字符串),若辛几何中的元素在原集合中存在则无视;用法:set.update(iterable),iterable是集合、列表、元组、字符串;无返回值,直接作用与原集合
  • remove函数:将集合中某个元素删除,若元素不存在会报错;用法:set.remove(item),item是一个元素,无返回值,直接作用于集合
  • clear函数:清空当前函数所有数据;用法:set.clear(),无需传参,无返回值
  • del 函数:删除字典
  • pop函数:删除集合中第一个元素;用法:set.pop(),无需传参

例:

a = {1}
print("操作集合之前:",a)

# add,添加一个元素,可以添加已有的,但是没有效果
a.add('aaa')
a.add(1)
print("第一次集合中添加元素后:",a)

# update,添加多个元素,会将集合,元组,列表,字符串拆开,然后再插入集合中
a.update(['1', '2'])
a.update(('3', '4'))
a.update('我是')
print("第二次集合中添加元素后:",a)

# remove,删除指定的元素“aaa”
a.remove('aaa')
print("删除元素元素“aaa”后:",a)

# pop,删除第一个元素
a.pop()
print("删除第一个元素后:",a)

结果:
在这里插入图片描述

5.集合的运算

  • 交集:2个或多个集合中都有的元素,a_set.intersection(b_set…),可以传多个参数
  • 并集:2个或多个集合中所有元素(集合中元素不重复),a_set.union(b_set…),可以传多个参数
  • 差集:a集合中有b集合中没有的元素,a_set.difference(b_set)
  • 交叉补集:并集减去交集,a_set.symmetric_difference(b_set)
  • 超集:若b中包含有a中所有的元素,则b是a的超集,a_set.issubset(b_set)

例:

a = {1, 2, 'ha'}
b = {2, 5, 9}

print("集合a:",a)
print("集合b:",b)

# 交集,取2个集合中都有的元素,有2种方法
jiao_1 = a & b
jiao_2 = a.intersection(b)
print("集合a与b的交集:",jiao_1)
print("集合a与b的交集:",jiao_2)

# 并集,取2个集合中所有元素,有2种方法
bing_1 = a | b
bing_2 = a.union(b)
print("集合a与b的并集:",bing_1)
print("集合a与b的并集:",bing_2)

# 差集,集合a减去集合b,即a有但是b没有的元素,有2种方法
cha_1 = a.difference(b)
cha_2 = a - b
print("集合a与b的差集:",cha_1)
print("集合a与b的差集:",cha_2)

# 交叉补集,并集减去交集,即2个集合中独有的元素,有2种方法
bu_1 = a.symmetric_difference(b)
bu_2 = a ^ b
print("集合a与b的交叉补集:",bu_1)
print("集合a与b的交叉补集",bu_2)

# 超集,若是b中包含有a全部的元素,则b是a的超集,返回True
chao = a.issubset(b)
print("集合b是a的超集:",chao)

结果:
在这里插入图片描述

6.isdisjoint函数:判断2个集合中是否包含相同的元素,若没有返回True,否则返回False

用法:

  • a_set.isdisjoint(b_set),返回一个布尔值

例:

a = {1, 2, 'a'}
b = {'1', 'a'}
c = {(1, 2)}
print('a字典:{}'.format(a))
print('b字典:{}'.format(b))
print('c字典:{}'.format(c))

print('a与b没有相同元素:{}'.format(a.isdisjoint(b)))
print('a与c没有相同元素:{}'.format(a.isdisjoint(c)))

结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值