Python 入门系列 —— 20. Set的CURD操作

质量保
• 阅读 1685

set 访问

想要访问 set 集合,用不了 index 或 key ,但可以通过 for 循环来迭代 set 集合,或者用 in 判断某一个值是否在集合中,如下代码所示:


thisset = {"apple", "banana", "cherry"}

for x in thisset:
  print(x)

PS E:\dream\markdown\python> & "C:/Program Files (x86)/Python/python.exe" e:/dream/markdown/python/app/app.py
apple
banana
cherry

接下来是用 in 的案例。


thisset = {"apple", "banana", "cherry"}

print("banana" in thisset)


PS E:\dream\markdown\python> & "C:/Program Files (x86)/Python/python.exe" e:/dream/markdown/python/app/app.py
True

修改 item

集合一旦创建好之后,不能修改 set 中的项,只能新增。

新增 item

要想往 set 集合中新增,可以使用 add() 方法, 比如下面的例子。


thisset = {"apple", "banana", "cherry"}

thisset.add("orange")

print(thisset)

PS E:\dream\markdown\python> & "C:/Program Files (x86)/Python/python.exe" e:/dream/markdown/python/app/app.py
{'cherry', 'banana', 'orange', 'apple'}

新增 set 大集合

将一个set 整体加入到另一个 set 中,可以使用 update() 方法。


thisset = {"apple", "banana", "cherry"}
tropical = {"pineapple", "mango", "papaya"}

thisset.update(tropical)

print(thisset)

PS E:\dream\markdown\python> & "C:/Program Files (x86)/Python/python.exe" e:/dream/markdown/python/app/app.py
{'banana', 'pineapple', 'papaya', 'mango', 'apple', 'cherry'}

set 的 update 方法除了可以单纯的添加 set 集合,还可以是任何可迭代的集合,比如:tuple,list,dict 等等。


thisset = {"apple", "banana", "cherry"}
mylist = ["kiwi", "orange"]

thisset.update(mylist)

print(thisset)

PS E:\dream\markdown\python> & "C:/Program Files (x86)/Python/python.exe" e:/dream/markdown/python/app/app.py
{'cherry', 'orange', 'kiwi', 'apple', 'banana'}

移除 item

要想从 set 集合中移除某一个item,可以使用 remove() 或者 discard() 方法,如下代码所示:


thisset = {"apple", "banana", "cherry"}

thisset.remove("banana")

print(thisset)

PS E:\dream\markdown\python> & "C:/Program Files (x86)/Python/python.exe" e:/dream/markdown/python/app/app.py
{'cherry', 'apple'}

有些朋友可能就要问了,remove 和 discard 有什么区别?前者表示如果item不在集合中就会抛异常,后者则不会。

set 清空和删除

如何想把 set 集合中的所有元素都抹掉,可以使用 clear() 方法。


thisset = {"apple", "banana", "cherry"}

thisset.clear()

print(thisset)

PS E:\dream\markdown\python> & "C:/Program Files (x86)/Python/python.exe" e:/dream/markdown/python/app/app.py
set()

如果想把 set 集合释放掉,可以使用 del。


thisset = {"apple", "banana", "cherry"}

del thisset

print(thisset)


PS E:\dream\markdown\python> & "C:/Program Files (x86)/Python/python.exe" e:/dream/markdown/python/app/app.py
Traceback (most recent call last):
  File "e:/dream/markdown/python/app/app.py", line 5, in <module>
    print(thisset)
NameError: name 'thisset' is not defined

从上面代码可以看出,如果 del 之后想 print 的话,将会抛出异常。

set 合并

有几种方式可以实现 set 集合合并,要么使用 union ,要么使用 update,前者是非破坏性操作,后者就是一种破坏性了,可以细评如下代码:


set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}

set3 = set1.union(set2)
print(set3)

set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}

set1.update(set2)
print(set1)

set 交集

set 之间除了 union 操作,还可以 intersection 求交集,如下代码所示:


x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

z = x.intersection(y)

print(z)

PS E:\dream\markdown\python> & "C:/Program Files (x86)/Python/python.exe" e:/dream/markdown/python/app/app.py
{'apple'}

set 更多方法

除了上面介绍的方法,set 集合中还有非常多的内建方法,如下经供参考。

Python 入门系列 —— 20. Set的CURD操作

译文链接:https://www.w3schools.com/pyt...

更多高质量干货:参见我的 GitHub: python

点赞
收藏
评论区
推荐文章
Python进阶者 Python进阶者
4年前
说说Python集合的那些事儿
大家好,我是IT共享者,人称皮皮。今天给大家来捋一捋Python集合。一、什么是集合?集合(set)和字典(dict)类似,它是一组key的集合,但不存储value。集合的特性就是:key不能重复。二、集合常用操作1\.创建集合set的创建可以使用也可以使用set函数:s1'a','b','c','a','d','b'
zdd小小菜鸟 zdd小小菜鸟
2年前
Java基础面试
Java基础面试1.Java集合类的总结tex1、Iterator:Collection(值)、Map(键值对);2、Collection:Set(无序不重复)、List(有序可重复)、Queue;3、Set:H
Stella981 Stella981
3年前
Python中的list详解
Python中内置的一种数据类型list,列表。list是一个有序集合,所谓有序集合就是可以通过Key或者Index进行访问(无序集合,集合的元素只能遍历,比如set)。list能随时随地进行增加和删除。python中list用\\进行表示。例如:\\\friends\'fanbinbin','libinbin','xijin
Stella981 Stella981
3年前
Redis Set (4)
存储类型String类型的无序集合,最大存储数量2^321(40亿左右)!(https://oscimg.oschina.net/oscnet/up877f026429a9ab49ee35684666672d80b18.png)存储(实现)原理Redis用intset或hashtable存储set。如果元素都是整数
Stella981 Stella981
3年前
Map查找表,队列和栈
存入keyvalue对Vput(Kk,Vv);获取key所对应的value值Vget(Kk);判断Map是否包含给定的key或value值:booleancontainsKey(Kk),booleancontainsValue(Vv);遍历所有的key:Set<KkeySet();遍历所有keyvalue对Set<Entrye
Stella981 Stella981
3年前
Redis 有序集合(sorted set)
Redis有序集合(sortedset)Redis有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是
Stella981 Stella981
3年前
Redis
Redis集合包括Set(无序集合)和ZSet(有序集合),这里的Set实现相当于Java中的HashSet,它内部实现了一个特殊的字典,字典中所有的value都是一个值NULL。下面我们来熟悉下set的常用的命令Setsadd namehelloZSetzset是一个有序集合,他有着java里的Sor
Wesley13 Wesley13
3年前
Java方面技术点小整理
Java中的集合吗?java中的集合分为value、keyvalueg两种存储值有分为list和setList有序的,可以重复Set是序的,不可以重复的根据equals和hashCode判断如果一个对象要存储在set中,必须重写equals和hashCode的方法;存储keyvalue的为map
3A网络 3A网络
2年前
Redis 存储对象信息是用 Hash 还是 String
Redis存储对象信息是用Hash还是StringRedis内部使用一个RedisObject对象来表示所有的key和value,RedisObject中的type,则是代表一个value对象具体是何种数据类型,它包含字符串(String)、链表(List)、哈希结构(Hash)、集合(Set)、有序集合(Sortedset)。
菜园前端 菜园前端
2年前
什么是集合?
原文链接:什么是集合?集合是一种无序且唯一的数据结构,其中的唯一是指集合中的元素。在ES6中新增了一种数据结构Set就是集合。实现功能new()实例化一个集合add()添加元素delete()删除元素has()判断是否存在元素size()获取集合大小应用场
小万哥 小万哥
1年前
Python 集合(Sets)2
访问项您无法通过引用索引或键来访问集合中的项。但是,您可以使用for循环遍历集合项,或者使用in关键字检查集合中是否存在指定的值。示例,遍历集合并打印值:Pythonthisset"apple","banana","cherry"forxinthisset