认识python中的set集合及其用法

简介: python中,集合(set)是一个无序排列,可哈希,支持集合关系测试,不支持索引和切片操作,没有特定语法格式,只能通过工厂函数创建.集合里不会出现两个相同的元素,所以集合常用来对字符串或元组或列表中的元素进行去重操作。

python中,集合(set)是一个无序排列,可哈希,
支持集合关系测试,不支持索引和切片操作,没有特定语法格式,
只能通过工厂函数创建.集合里不会出现两个相同的元素,
所以集合常用来对字符串或元组或列表中的元素进行去重操作。

生成一个集合可以使用如下语法:

生成集合语法1:
>>> l1=[1,2,3,4,5,6]
>>> s1=set(l1)
>>> print(s1)
{1, 2, 3, 4, 5, 6}
在这里,使用工厂函数set创建集合,set的参数可以是一个列表,也可以是一个元组或字符串。
生成集合语法2:
>>> s2={6,7,8,9,10}
>>> print(s2)
{8, 9, 10, 6, 7}
生成集合语法3:
>>> s3={i for i in range(10)}
>>> print(s3)
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

集合类型的方法和操作:

add

为集合增加一个元素,如果集合中本来已经存在这个元素对集合无影响
Add an element to a set.
This has no effect if the element is already present.
>>> s1={1,2,3,4,5,6,7}
>>> s1.add(8)
>>> print(s1)
{1, 2, 3, 4, 5, 6, 7, 8}
>>> s1.add(9)
>>> print(s1)
{1, 2, 3, 4, 5, 6, 7, 8, 9}

clear

清空集合里所有的元素
Remove all elements from this set.
>>> s1={1,2,3,4,5,6,7}
>>> s2={5,6,7,8,9}
>>> s1.clear()
>>> print(s1)
set()
>>> s2.clear()
>>> print(s2)
set()

copy

对集合进行浅拷贝(只复制元素,不复制内存地址)
Return a shallow copy of a set.
>>> s1={1,2,3,4,5,6,7}
>>> print(s1,id(s1))
{1, 2, 3, 4, 5, 6, 7} 140509859430472
>>> s2=s1.copy()
>>> print(s2,id(s2))
{1, 2, 3, 4, 5, 6, 7} 140509842716712

difference

求两个或多个集合的差集,并返回一个新集合
Return the difference of two or more sets as a new set.
>>> s1={1,2,3,4,5,6,7}
>>> s2={5,6,7,8,9,10}
>>> s1.difference(s2)
{1, 2, 3, 4}
>>> s2.difference(s1)
{8, 9, 10}

difference_update

把两个集合的交集部分从集合中移除
Remove all elements of another set from this set.
>>> s1={1,2,3,4,5,6,7}
>>> s2={5,6,7,8,9,10}
>>> s1.difference_update(s2)
>>> print(s1)
{1, 2, 3, 4}
>>> s1={1,2,3,4,5,6,7}
>>> s2={5,6,7,8,9,10}
>>> s2.difference_update(s1)
>>> print(s2)
{8, 9, 10}

discard

从集合中移除一个元素,如果被移除的元素不在集合中,不会报错
Remove an element from a set if it is a member.
If the element is not a member, do nothing.
{1, 2, 3, 4, 5, 6, 7}
>>> s1.discard(7)
>>> print(s1)
{1, 2, 3, 4, 5, 6}
>>> s1.discard(4)
>>> print(s1)
{1, 2, 3, 5, 6}
>>> print(s1)
{1, 2, 3, 5, 6}

intersection

求两个或多个集合中的交集
Return the intersection of two sets as a new set.
>>> s1={1,2,3,4,5,6,7}
>>> s2={5,6,7,8,9,10}
>>> s1.intersection(s2)
{5, 6, 7}
>>> s2.intersection(s1)
{5, 6, 7}

intersection_update

把两个集合的交集做为新的集合
Update a set with the intersection of itself and another.
>>> s1={1,2,3,4,5,6,7}
>>> s2={5,6,7,8,9,10}
>>> s1.intersection_update(s2)
>>> print(s1)
{5, 6, 7}
>>> print(s2)
{5, 6, 7, 8, 9, 10}

>>> s1={1,2,3,4,5,6,7}
>>> s2={5,6,7,8,9,10}
>>> s2.intersection_update(s1)
>>> print(s2)
{5, 6, 7}
>>> print(s1)
{1, 2, 3, 4, 5, 6, 7}

isdisjoint

两个集合没有交集则返回True
Return True if two sets have a null intersection.
>>> s1={1,2,3,4,5,6,7}
>>> s2={5,6,7,8,9,10}
>>> s1.isdisjoint(s2)
False
>>> s1={1,2,3,4}
>>> s2={6,7,8,9}
>>> s1.isdisjoint(s2)
True

issubset

如果本集合是参数集合的子集,返回True
Report whether another set contains this set.
>>> s1={1,2,3,4}
>>> s2={1,2,3,4,5,6,7}
>>> s1.issubset(s2)
True
>>> s2.issubset(s1)
False

issuperset

如果本集合是参数集合的超集,返回True
Report whether this set contains another set.
>>> s1={1,2,3,4}
>>> s2={1,2,3,4,5,6,7}
>>> s1.issuperset(s2)
False
>>> s2.issuperset(s1)
True

pop

从集合中移除一个元素,如果集合为空,则报错
Remove and return an arbitrary set element.
Raises KeyError if the set is empty.
>>> s1={2,3,4,5}
>>> s1.pop()
2
>>> print(s1)
{3, 4, 5}
>>> s1.pop()
3
>>> s1.pop()
4
>>> s1.pop()
5
>>> s1.pop()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'pop from an empty set'

remove

移除集合中的一个元素,如果集合是空的,则报错
Remove an element from a set; it must be a member.  
If the element is not a member, raise a KeyError.
>>> s1={1,2,3,4,5,6}
>>> s1.remove(4)
>>> print(s1)
{1, 2, 3, 5, 6}
>>> s1.remove(9)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 9

symmetric_difference

返回两个集合的对称差集的集合
Return the symmetric difference of two sets as a new set.
>>> s1={1,2,3,4}
>>> s2={6,7,8,9}
>>> s1.symmetric_difference(s2)
{1, 2, 3, 4, 6, 7, 8, 9}
>>> s3={1,2,3,4,5,6}
>>> s4={5,6,7,8,9,10}
>>> s3.symmetric_difference(s4)
{1, 2, 3, 4, 7, 8, 9, 10}

symmetric_difference_update

与参数集合做对称差集,并返回给自身
Update a set with the symmetric difference of itself and another.
>>> s1={1,2,3,4}
>>> s2={6,7,8,9}
>>> s2.symmetric_difference_update(s1)
>>> print(s2)
{1, 2, 3, 4, 6, 7, 8, 9}

>>> s3={1,2,3,4,5,6}
>>> s4={5,6,7,8,9,10}
>>> s3.symmetric_difference_update(s4)
>>> print(s3)
{1, 2, 3, 4, 7, 8, 9, 10}

union

求两个或多个集合的并集
Return the union of sets as a new set.
>>> s1={1,2,3,4,5,6}
>>> s2={5,6,7,8,9}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}

>>> s3={1,2,3,4}
>>> s4={6,7,8,9}
>>> s3.union(s4)
{1, 2, 3, 4, 6, 7, 8, 9}

update

与另一个集合求并集,并返回给自身
Update a set with the union of itself and others.
>>> s3={1,2,3,4}
>>> s4={6,7,8,9}
>>> s3.update(s4)
>>> print(s3)
{1, 2, 3, 4, 6, 7, 8, 9}
目录
相关文章
|
10天前
|
索引 Python
python 格式化、set类型和class类基础知识练习(上)
python 格式化、set类型和class类基础知识练习
33 0
|
10天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作
|
11天前
|
Python
python学习8-集合
python学习8-集合
|
18天前
|
Python
python中threads.append的用法
将线程对象`t`添加到`threads`列表便于管理与控制线程,如等待所有线程完成。通过迭代列表并调用`join`方法,可依次等待每个线程执行完毕,实现同步。代码示例: ```python for t in threads: t.join() print(&quot;All threads are done!&quot;) ``` `join`方法使当前线程阻塞,直到线程执行结束。所有线程完成后,输出&quot;All threads are done!&quot;。
15 1
|
1月前
|
存储 Shell Linux
【Shell 命令集合 系统设置 内置命令】⭐⭐⭐Linux 设置或修改shell环境变量set命令 使用指南
【Shell 命令集合 系统设置 内置命令】⭐⭐⭐Linux 设置或修改shell环境变量set命令 使用指南
32 0
|
1月前
|
Python
掌握Python中的集合推导式
掌握Python中的集合推导式
|
1月前
|
Python
探索Python集合推导式的进阶应用
探索Python集合推导式的进阶应用
|
1月前
|
存储 数据处理 Python
深入剖析Python集合推导式的独特之处
深入剖析Python集合推导式的独特之处
|
1月前
|
数据处理 Python
Python集合推导式的优雅与实用
Python集合推导式的优雅与实用
|
1月前
|
数据采集 算法 数据处理
Python集合推导式的深度探索与实际应用
Python集合推导式的深度探索与实际应用