集合的概念、定义以及操作

集合的概念:

类比数学上的集合概念:无序(因此也无法访问)、无重复的元素集合

eg:

str1 = 'abc'#字符串可以进行索引,元素可重复
lst = [1,2,3]#列表可以进行索引,元素可重复
tpl = (1,2,3)#元组可以进行索引,元素可重复
dic = {'name':'jiang','age':18}#字典可以进行索引,元素可重复
jihe = {1,2,3}#集合的创建方式是{},但是里面的元素无法索引,也无法重复

集合又可以分为可变集合与不可变集合

可变集合(set)可以进行交并的操作

而不可变集合(frozenset)则无法进行交并操作

可变集合设置方式:1.直接运用{ }进行创建 2.运用set(iterable),set函数中放置可迭代对象创建

eg:

s1 = {'a','b','c'}
s2 = set(range(1,4))
print(s1)#输出:{'b', 'c', 'a'}
print(s2)#输出:{1, 2, 3}

不可变结合设置方式:frozenset(iterable),可迭代对象有 字符串、列表、元组、字典的key这些

注意:

设置集合时要注意:如果要设置空集合的话,必须要使用函数set()或者frozenset(),{}会被识别成空字典

s = {}
print(type(s))#输出:<class 'dict'>

此外,集合中的元素类型必须是哈希类型(暂时理解为:不可变类型)

s = {[1,2,3]}##列表是一个可变的类型;此外,字典也是一个可变的类型
print(s)#输出:TypeError: unhashable type: 'list'

集合中单一元素的操作

集合的新增:

对象方法:add(元素)

s = {1,2}
s.add(3)
print(s)

但是注意:增加的元素不能是  list 或者 dict 这种可变类型的元素,否则会报错

集合元素的删除:

1.remove函数  2.discard函数  3.pop函数  4.clear函数

1.remove函数

语法:remove(元素)

2.discard函数作用和remove函数一样,区别在于:remove函数中找不到指定的删除元素时会报错,但是discard函数则不会,找不到指定的删除元素的话就什么事情都不处理

s = {1,2}
s.discard(5)
print(s)#output:{1, 2}

3.pop函数:删除指定元素并返回其数值

语法:pop(element);若没有指定element的话,那么pop函数就会在集合中  随机 删除元素并返回

s = {1,2,'j','i','a'}
v = s.pop()
print(v, s)

v = s.pop()
print(v, s)

这串代码的输出结果,每次运行都不相同

4.clear函数:清空集合

集合之间的操作:

交集、并集、差集(均为对象方法)

1.交集:三个方法

语法:intersection( iterable ),inter表示相互,section表示部分,后面的参数是可迭代对象

(这表明,字符串、列表、字典这些也都可以作为参数,intersection函数的原理就是,将括号里面的可迭代对象转化成集合,再取交集。因此需要注意:【"1","2",【"1","2"】】),这种列表就是错误的,因为集合要求是不可变类型,这个最外层的括号会被转化为集合,而内层的【】却是列表,为可变类型,会报错)

方法二:可以用逻辑符号 & ,同样可以得到一样的结果

s = {1,2,'j','i','a'}
t = {1,3,'j','f'}
result = s.intersection(t)
print(result,type(result))#输出:{1, 'j'} <class 'set'>

注意一点:如果是可变集合与不可变集合取交集,得到的结果是什么类型?

s = {1,2,'j','i','a'}
t = frozenset([1,3,'j','f'])
result = s.intersection(t)
print(result,type(result))#输出:{1, 'j'} <class 'set'>

此时 集合 s  作为对象,得到的结果类型跟s一样为可变集合

当t作为对象时,得到的结果类型为?

s = {1,2,'j','i','a'}
t = frozenset([1,3,'j','f'])
result = t.intersection(s)
print(result,type(result))#输出:{1, 'j'} <class 'set'>

结果类型跟t一样为 不可变类型集合。

说明两个不同类型集合混合时,交集的数据类型和对象集合的类型保持一致

方法三:intersection_update()函数

作用:对于 可变列表 ,取交集以后并更改对应的 可变列表,要注意的是,该对象方法是直接修改列表,没有返回值

s = {1,2,'j','i','a'}
t = frozenset([1,3,'j','f'])
s.intersection_update(t)
print(s)#输出:{1, 'j'}

2.并集:

union函数:也可逻辑运算符 |

s = {1,2,'j','i','a'}
t = frozenset([1,3,'j','f'])
result = s.union(t)
print(result)#output:{'j', 1, 2, 'i', 3, 'f', 'a'}

并集中的update函数:

s = {1,2,'j','i','a'}
t = frozenset([1,3,'j','f'])
s.update(t)
print(s)#output:{1, 2, 3, 'f', 'j', 'i', 'a'}

3.差集:

语法:difference();也可逻辑运算符 -

同样的也有差集的update

集合的判定:

判定一个集合是否包含另一个集合:is super set()

判定一个集合是否包含于另一个集合:is sub set()

判定两个集合是否  不 相交:is dis joint()

s = {1,2}
t = {1, 2, 3, 'j', 'f'}
result1 = s.issubset(t)
print(result1)#output:True
result2 = t.issuperset(s)
print(result2)#True

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值