python数据元素--集合(2/2 集合的常用操作)

python数据元素--集合(2/2 集合的常用操作)

1.单一集合操作

s.add():指定添加set对象中的一个元素。

s.remove(element):指定删除set对象中的一个元素;若不存在,返回一个错误。

s.discard(element):指定删除集合中的一个元素;若不存在不做任何操作。

s.pop():随机删除并返回集合中的一个元素。若集合为空报错。

s.clear():清空一个集合中的所有元素。

(1)集合的增,删。

【范例】从指定集合添加和删除元素。

s = {1, 2, 3}
s.add(4)  # 添加元素4
print(s)  # {1, 2, 3, 4}
s.remove(1)  # 删除元素1
print(s)  # {2, 3, 4}

【范例】比较discard()和remove()函数。

s = {1, 2, 3, 4}
s.discard(5)  # 删除的元素不存在则不做任何操作
s.remove(5)  # 删除的元素不存在则报错

Traceback (most recent call last):

  File "D:/space/Pycharm/demo/test/demo2/test1.py", line 3, in <module>

    s.remove(5)

KeyError: 5

【范例】随机删除集合中的元素。

s = {1, 2, 3, 4}
s.pop()
print(s)  # {2, 3, 4}
s.pop()
print(s)  # {3, 4}
s.pop()
print(s)  # {4}

【范例】清空集合中的所有元素。

s = {1, 2, 3, 4}
s.clear()
print(s)  # set()

(2)集合的改:元素为不可变类型,不能修改。

(3)集合的查(不能通过索引或key进行查询)

A:通过for in遍历:

【范例】遍历集合中所有元素。

s = {1, 2, 3, 4}
for i in s:
    print(i)

B:通过迭代器访问:

1. 生成一个迭代器

2. 通过迭代器访问(next()或for in)

【范例】通过迭代器遍历集合。

s = {1, 2, 3}
# 1.生成一个迭代器
its = iter(s)
# 2.通过迭代器访问(next()或for in)
# (1)使用next
print(next(its))
print(next(its))
# (2)使用for in
for v in its:
    print(v)

2.集合之间操作

(1)交集

intersection(Iterable)

逻辑与"&"

intersection_update(...):执行完后会修改原来集合

A:intersection(Iterable)

【范例】通过intersection(Iterable)实现打印两个集合的交集。

s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = s1.intersection(s2)
print(s1, s2)  # {1, 2, 3} {3, 4, 5}
print(s3)  # {3}

B:逻辑与"&"

【范例】通过逻辑与“&”实现打印两个集合的交集。

s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = s1 & s2
print(s3)

C:intersection_update(...):执行完后会修改原来集合。

s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = s1.intersection_update(s2)
print(s3)  # None
print(s1, s2)  # {3} {3, 4, 5}

(2)并集

union():返回并集

逻辑或“|”

update():更新并集

【范例】并集的操作。

s1 = {1, 2, 3}
s2 = {3, 4, 5}
# A:union():返回并集
print(s1.union(s2))  # {1, 2, 3, 4, 5}
# B:逻辑或“|”
print(s1 | s2)  # {1, 2, 3, 4, 5}
# C:update():更新并集
print(s1)  # {1, 2, 3}
# 更改s1的内容
s1.update(s1.union(s2))
print(s1)  # {1, 2, 3, 4, 5}

(3)差集

difference()

算数运算符“-”

difference_update()

【范例】差集的使用。

s1 = {1, 2, 3}
s2 = {3, 4, 5}
print(s1.difference(s2))  # {1, 2}
print(s1 - s2)  # {1, 2}
print(s1.difference_update(s2))  # None,无返回值

(4)判定

isdisjoint():判定两个集合是否不相交

issuperset():判定一个集合是否包含另一个集合

issubset():判定一个集合是否包含于另一个集合

【范例】实现集合简单的判定操作。

s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = {1}
# isdisjoint():判定两个集合是否不相交
print(s1.isdisjoint(s2))  # False
# issuperset():判定一个集合是否包含另一个集合
print(s1.issuperset(s2))  # False
print(s1.issuperset(s3))  # True
# issubset():判定一个集合是否包含于另一个集合
print(s2.issubset(s1))  # False
print(s3.issubset(s1))  # True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值