set( )函数

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。基本功能包括关系测试和消除重复元素。集合对象还支持 union(联合),intersection(交),difference(差)和 sysmmetric difference(对称差集)等数学运算。

语法:

set(iterable)

参数:

iterable - 必需。序列、集合或迭代器对象。

a = set({1,2,3,4,5,6,7,5,4,6,2,1})
print(a)

输出结果为:

{1, 2, 3, 4, 5, 6, 7}
一、构造集合

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

1、使用大括号{}

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}



print(basket)  # {'apple', 'orange', 'banana', 'pear'}

当使用print()函数打印输出时,会自动将集合中重复的元素去除,且每次打印返回的顺序并不和初始的一致

2、使用set()函数

fruit = set(("apple", "banana", "cherry"))  # 请留意这个双括号



print(fruit)  # {'banana', 'apple', 'cherry'}

在使用set()函数创建集合时,一定要注意双括号

二、向 set 集合中添加元素

set 集合中添加元素,可以使用 set 类型提供的 add() 方法实现,该方法的语法格式为:

setname.add(element)

其中,setname 表示要添加元素的集合,element 表示要添加的元素内容。

需要注意的是,使用 add() 方法添加的元素,只能是数字、字符串、元组或者布尔类型(True 和 False)值,不能添加列表、字典、集合这类可变的数据,否则 Python 解释器会报 TypeError 错误。例如:

a = {1,2,3}a.add((1,2))print(a)a.add([1,2])print(a)

运行结果为:

{(1, 2), 1, 2, 3}
Traceback (most recent call last):
 File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
  a.add([1,2])
TypeError: unhashable type: 'list'
三、从set集合中删除元素

删除现有 set 集合中的指定元素,可以使用 remove() 方法,该方法的语法格式如下:

setname.remove(element)

使用此方法删除集合中元素,需要注意的是,如果被删除元素本就不包含在集合中,则此方法会抛出 KeyError 错误,例如:

a = {1,2,3}
a.remove(1)
print(a)
a.remove(1)
print(a)

运行结果为:

{2, 3}
Traceback (most recent call last):
 File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
  a.remove(1)
KeyError: 1

上面程序中,由于集合中的元素 1 已被删除,因此当再次尝试使用 remove() 方法删除时,会引发 KeyError 错误。

如果我们不想在删除失败时令解释器提示 KeyError 错误,还可以使用 discard() 方法,此方法和 remove() 方法的用法完全相同,唯一的区别就是,当删除集合中元素失败时,此方法不会抛出任何错误。

例如:

a = {1,2,3}a.remove(1)print(a)a.discard(1)print(a)

运行结果为:

{2, 3}
{2, 3}
四、清空set集合中的所有元素

清空set 集合中所有的元素,可以使用 clear() 方法,该方法的语法格式如下:

setname.clear(element)

使用此方法清空集合中元素,需要注意的是,set()才表示空集合,{}表示的是空字典:

set1 = {1,2,3}
set1.clear()
print(set1)

运行结果为:

set()
五、拷贝set集合中的元素

拷贝set 集合中所有的元素,可以使用 capy() 方法,该方法的语法格式如下:

setname2 = .setname1.copy(element)

使用此方法拷贝集合中元素是,拷贝 set1 集合给 set2:

set1 = {1,2,3}
set2 = set1.copy()
print(set1)
set1.add(4)
print(set1)
print(set2)

运行结果为:

{1, 2, 3}
{1, 2, 3, 4}
{1, 2, 3}

**注意:**详见

Python set集合方法详解(全) (biancheng.net)

Python的set集合详解 - 知乎 (zhihu.com)

【python】集合set详解(超详细)_python set 集合-CSDN博客

>>> x = set('eleven')
>>> y = set('twelve')
>>> x,y
({'l', 'e', 'n', 'v'}, {'e', 'v', 'l', 't', 'w'})
>>> x & y  #交集
{'l', 'e', 'v'}
>>> x | y  #并集
{'e', 'v', 'n', 'l', 't', 'w'}
>>> x - y  #差集
{'n'}
>>> y -x   #差集
{'t', 'w'}
>>> x ^ y  #补集
{'t', 'n', 'w'}
>>> y ^ x  #补集
{'w', 'n', 't'}

交集 & : x&y,返回一个新的集合,包括同时在集合 x 和y中的共同元素。

并集 | : x|y,返回一个新的集合,包括集合 x 和 y 中所有元素。

差集 - : x-y,返回一个新的集合,包括在集合 x 中但不在集合 y 中的元素。

补集 ^ : x^y,返回一个新的集合,包括集合 x 和 y 的非共同元素。

六、创建空集合
>>> s=set()
>>> s
set()
>>> s1=set([]) #列表
>>> s1
set()
>>> s2=set(()) #元组
>>> s2
set()
>>> s3=set({}) #字典
>>> s3
set()

**注意:**想要创建空集合,你必须使用 set() 而不是 {}。后者用于创建空字典,我们在后面介绍的一种数据结构。

七、创建非空集合

即列表,元组,字典不在是空值,举两个例子

>>> s1=set([1,2,3,4])
>>> s1
{1, 2, 3, 4}
  
>>> s3=set({'a':2,'b':3,'c':4})
>>> s3
{'c', 'a', 'b'}

注:字典转set集合,需要注意的是,只取了字典的key,相当于将字典中的dict.keys()列表转成set集合。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐