Python基础(06)——集合(set、frozenset)

Python基础(06)——集合(set、frozenset)

集合是无序无索引的集合,在Python中集合用花括号表示,字典也用花括号表示。

1.set的定义

创建集合:集合种的集合项可以是不同数据类型的元素。

创建集合有俩种方法,1.将集合直接赋值给变量 2.使用set()集合创建函数来创建集合

thisset = {"apple","orange","banana"}
thisset = set(("apple","orange","banana"))

因为集合是无序的,所以无法显示集合项的显示顺序。所输出的序列为任意序列

2. 访问集合项

因为set是无序的,无法通过索引访问集合项,但是可以使用for循环遍历集合项

thisset = {"apple","orange","banana"}
for x in thisset:
    print(x)
#---output---
# banana
# orange
# apple

可以用**“in”**关键字检查集合项中是否有指定的集合项

print("banana" in thisset)   #True

3. 更改集合项

集合一旦创建不可以更改其集合项。但是可以添加新的集合项,或者删除集合项。

3.1 添加新集合项

在集合中添加新的集合项有两种方法:

1.通过add()方法,可添加一个集合项

2.通过update()方法,可以添加多个集合项

thisset.add("cherry")
thisset.update("1","2")   #此方法必须传入字符串类型参数

3.2 删除集合项

删除集合项有三种方法

1.使用remove()方法删除指定的集合项

2.使用discard()方法删除指定的集合项

3.使用pop()方法删除最后一个集合项。因为集合是无序的,所以并不知道删除的是哪一项。所以此方法的返回值就是删除的集合项。

thisset = {'banana', '2', 'apple', 'cherry', '1', 'orange'}
thisset.remove("1")
thisset.discard("2")
print(thisset)   # {'banana', 'apple', 'cherry', 'orange'}
print(thisset.pop())   # banana

在删除集合项时,若集合中没有此集合项,其中remove()将会引发KeyError错误,discard()方法不执行删除操作。

4.set常用方法

add()向集合添加元素。
clear()删除集合中的所有元素。
copy()返回集合的副本。
difference()返回包含两个或更多集合之间差异的集合。
如: set = set1.different(set2) 查看并返回在set1种但不在set2中的集合,并未将其删除。
difference_update()删除此集合中也包含在另一个指定集合中的项目。
如:set1.different_update(set2) 删除set1中两个集合都存在的项目
discard()删除指定项目。
intersection()返回为两个其他集合的交集的集合。
如:set1.intersection(set2) 返回新集合,其中包含在set1中和set2中的项目集合
intersection_update()删除此集合中不存在于其他指定集合中的项目。
如:set1.intersection_update(set2) 在set1中删除set1和set2都互不存在的项目
isdisjoint()返回两个集合是否有交集。
如:set1.isdisjoint(set2) 没有交替返回True
issubset()返回另一个集合是否包含此集合。
如:set1.issubset(set2) 检查set2中是否包含set1的所有集合项,是返回True,否则返回False
issuperset()返回此集合是否包含另一个集合。
如:set1.issuperset(set2)检查set2中的所有集合项是否都存在与set1中,如果是是返回True。
pop()从集合中删除一个元素。
remove()删除指定元素。
symmetric_difference()返回具有两组集合的对称差集的集合。
set1.symmetric_difference(set2) 返回新集合,其中包含两个集合中的所有项目,但不包含两个集合中都存在的项目。
symmetric_difference_update()插入此集合和另一个集合的对称差集。
set1.symmetric_difference_update(set2) 在set1中插入set2中有set1没有,并删除两者都有的集合项,
union()返回包含集合并集的集合。
set1.union(set2) 将set1的set2的并集 返回新集合
update()用此集合和其他集合的并集来更新集合。
set1.union(set2) 是在set1中插入set2有但是set1没有的集合项

具体操作如下

set1 = {"a","b","c","d"}
set2 = {"a","b","1","2"}
#一下操作均是在set1 = {"a","b","c","d"} set2 = {"a","b","1","2"}的基础进行操作
print(set1.difference(set2))

set1.difference_update(set2)
print(set1)

print(set1.intersection(set2))

set1.intersection_update(set2)
print(set1)

print(set1.isdisjoint(set2))

print(set1.issubset(set2))

print(set1.issuperset(set2))

print(set1.symmetric_difference(set2))

set1.symmetric_difference_update(set2)
print(set1)

print(set1.union(set1))

set1.update(set2)
print(set1)
#---output---
# {'c', 'd'}
# {'d', 'c'}
# {'a', 'b'}
# {'b', 'a'}
# False
# False
# False
# {'2', 'c', 'd', '1'}
# {'c', '1', 'd', '2'}
# {'a', 'd', 'b', '1', '2', 'c'}
# {'b', 'd', '2', 'a', 'c', '1'}

5.set和frozenset的区别

不同点:

1.set集合是可变序列集合,frozenset集合是不可变的序列集合,frozenset集合相当于一个冻结的集合,可以作为字典的键。

2.set集合中能改变集合本省的方法,如pop,remove,discard、add方法,frozenset均不支持。

3.set集合对象还支持union(联合), intersection(交集), difference(差集)和sysmmetric difference(对称差集)等数学运算

4.创建方式不同,frozenset使用圆括号和方括号创建集合

f_set = frozenset(["5",1,2,3])
for f in f_set:
    print(f)

共同点:

  1. for循环可以遍历frozenset集合
  2. 关键字in可以检查集合项
f_set = frozenset(["5",1,2,3])
for f in f_set:
    print(f)
    
if 1 in f_set:
    print("Yes")
    
#---output---
#5
#1
#2
#3

#Yes
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值