Python学习笔记——集合

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

创建格式:

parame = {value01,value02,...}
或者
set(value)

创建集合

# 创建空集合
set1 = set()

# 创建同一数据类型元素的集合
set2 = {"a", "b", "c", "d", "e", "f"}

# 创建不同数据类型元素的集合
set3 = {"a", 2, 'a', ()}

集合中元素不可重复

set = {1,1,1,3,3,3,2,2,2}
print(set)    #1,3,2

集合中元素无序

set = {2,1,5,6,2,8,4}
print(set)    #1,5,8,4,2,6

添加集合元素

  • 通过 add() 添加元素

将新元素添加到集合中,如果元素已存在,则不进行任何操作。

set1 = set(("Google", "Runoob", "Taobao"))
set1.add("Facebook")
print(set1)    #{'Taobao', 'Facebook', 'Google', 'Runoob'}
  • 通过 update() 添加元素

通过 update() 添加元素时,参数必须是可迭代对象,比如可以是 str、list、tuple、set、dict 等类型,该方法不同于 add() 方法,add() 是把参数当作一个整体添加到集合中,而 update() 则是把参数里的所有元素逐一添加到集合中。

set1 = set(("Google", "Runoob", "Taobao"))
set1.update({1,2})
print(set1)    #{1, 2, 'Google', 'Taobao', 'Runoob'}
set1.update([1,4],[5,6])  
print(set1)    #{1, 2, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}

删除集合元素

  • 通过 remove() 删除指定元素,元素不存在则报错

  • 通过 discard() 删除指定元素,元素不存在不会报错

  • 通过 pop() 随机删除元素,会返回删除的元素(如果集合为空时使用 pop() 方法,则会出现报错)

  • 通过 clear() 删除集合所有元素

注意:set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
set1 = set(("Google", "Runoob", "Taobao"))
set1.remove("Taobao")
print(set1)    #{'Google', 'Runoob'}
set1.remove("Facebook")   # 不存在会发生错误

set1.discard("Facebook")  # 不存在不会发生错误

set2 = set1.pop()

set1.clear()
print(set1)    #set()

集合运算操作符

  • 运算符 & ,取交集,返回2个集合中相同的元素

  • 运算符 | ,取并集,合并2个集合并去除重复元素

  • 运算符 - ,取差集,从集合中去除元素

  • 运算符 ^ ,取对称差集,返回两个集合中不重复的元素集合

  • 关键字 in

通过关键字 in ,可检查当前集合中是否包含指定元素,返回结果为布尔值 True 或 False。

set1 = {1, 2, 3, 4}
set2 = {1, 5, 6, 4}

print(set1 & set2)    #{1, 4}
print(set1 | set2)    #{1, 2, 3, 4, 5, 6}
print(set1 - set2)    #{2, 3}
print(set2 - set1)    #{5, 6}
print(set1 ^ set2)    #{2, 3, 5, 6}
print(1 in set1)     #True

集合内置方法

add()

为集合添加元素

clear()

移除集合中的所有元素

copy()

拷贝一个集合

difference()

返回多个集合的差集

difference_update()

移除集合中的元素,该元素在指定的集合也存在。

discard()

删除集合中指定的元素

intersection()

返回集合的交集

intersection_update()

返回集合的交集。

isdisjoint()

判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。

issubset()

判断指定集合是否为该方法参数集合的子集。

issuperset()

判断该方法的参数集合是否为指定集合的子集

pop()

随机移除元素

remove()

移除指定元素

symmetric_difference()

返回两个集合中不重复的元素集合。

symmetric_difference_update()

移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

union()

返回两个集合的并集

update()

给集合添加元素

不可变集合

取值上,不可变集合与集合是一样的。不同的是,frozenset里的值不能被改变。

使用函数frozenset将元组mytuple转换成了不可变集合myset

mytuple  =  (’ hello’,’ hello ’,’ Python ’, 2, 1, 2)    #定义一个tuple
myset  =  frozenset(mytuple)        #使用set函数将元组转成set(不可变集合)
print(myset)                        #  frozenset  ( { 1, 2 ,’ hello  ’,’ Python  ’ })

最后一行的输出可以看到,myset里面的元素被去重了,而且会有个明显的标识fozenset,这表明该集合是不可变的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值