python详解集合

发布于:2022-12-28 ⋅ 阅读:(166) ⋅ 点赞:(0)

集合是无序和无索引的集合。在 Python 中,集合用花括号编写。没有值只有键。(会计算哈希值存放)

一、创建

        1.直接{ }

s = {12,52,62,41}

        2.使用内置函数set( )

s = set({56,23,85,74,12})

【注】set( )函数只能接收一个参数; 集合不会存在重复元素;输出结果都是无序的;

        3. 空集合

s = set()

【注】只有这一种方法可以创建空集合

二、集合元素的操作

        1.存在指定元素

s1 = {12,52,40,60,85}
print(12 in s1)
print(85 not in s1)

 True

 False

        2.新增

                1.add( )

s1 = {12,52,40,60,85}
s1.add(100)
print(s1)

{12,52,100,85 ,60,40}

 【注】add( )函数只能添加一个元素

                2.update( )函数

s1 = {12,52,40,85}
s1.update([120,69,'python'])
print(s1)

s1.update({800,900,'word'})
print(s1)

s1.update(('hello'))
print(s1)

 {69, 40, 12, 'python', 52, 85, 120}
{800, 900, 69, 40, 12, 'python', 'word', 52, 85, 120}
{800, 'h', 900, 69, 40, 'l', 12, 'python', 'word', 'e', 52, 85, 120, 'o'}

【注】只有添加元素是集合{ }、列表 [ ]时字符串不会被拆开;update( )只能接受一个参数。

        3.删除

                1.remove( )

s1 = {12,52,40,85}
s1.remove(12)
print(s1)

s1.remove(100)
print(s1)

{52,40,85} 

KeyError: 100

【注】删除一个元素,没有找到对应元素时不会抛出kerError 

                2.discard()

s1 = {12,52,40,85}
s1.discard(85)
print(s1)

s1.discard(100)
print(s1)

{40,10,52}

 

【注】 删除一个元素,没有找到对应元素时不会抛出异常

                3.pop( )

s1 = {12,52,40,85}
s1.pop()
print(s1)
s1.pop()
print(s1)

{12,52,85}

{12,85} 

【注】pop( )函数没有参数,随机删除一个元素。

                4.clear( )清空

s1 = {12,52,40,85}
s1.clear()
print(s1)

set() 

三、集合间关系

        1.判断相等

s1 = {12,52,40,85}
s2 = {85,40,52,12}
print(s1 == s2)
print(s1 != s2)

True

False 

【注】只判断元素是否相等与位置没有关系(无序性)

        2.判断子集

s1 = {12,52,40,85}
s2 = {85,12}
print(s2.issubset(s1))

True 

        3.判断超集

        如果集合B是集合A的子集,则A集合是B集合的超集

s1 = {12,52,40,85}
s2 = {85,40}
print(s1.issuperset(s2))

True 

        4.判断交集

        有交集返回False 反之返回True

s1 = {12,52,40,85}
s2 = {85,90,100}
print(s1.isdisjoint(s2))

Flase 

四、数据操作

        1.计算交集

s1 = {12,52,40,85}
s2 = {85,88,60,40}
print(s1.intersect(s2))
print(s1 & s2)
"""两种方法是等价"""

{85,40} 

{85,40}

        2.计算并集

s1 = {12,52,40,85}
s2 = {40,99}
print(s1.union(s2))
print(s1 | s2)

{12,40,99,52,85}

{12,40,99,52,85} 

【注】会去除重复元素 

        3.差集

s1 = {12,52,40,85}
s2 = {85,40,99}
print(s1.difference(s2))
print(s1 - s2)

{52,12,} 

【注】在s1中去除s1与s2 的交集,剩余元素就是s1减s2的集合

        4.对称差集

s1 = {12,52,40,85}
s2 = {85,40,99}
print(s1.symmetric_difference(s2))
print(s1 ^ s2)

{52,12,99}

 {52,12,99}

【注】在s1与s2的并集中去除交集的结果

五、生成式

se = {i*5 for i in range(10)}
print(se)

 {0, 35, 5, 40, 10, 45, 15, 20, 25, 30}

数据结构 是否可变 是否重复 是否有序 定义符号
列表(list) 可变 可重复 有序 [ ] 
元组(tuple) 不可变 可重复 有序 ( )
字典(dict) 可变

key不可重复

value可重复

无序 { key:value}
集合(set) 可变 不可重复 无序 { }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文含有隐藏内容,请 开通VIP 后查看