set()集合的概念、方法和操作
来源:互联网 发布:淘宝哪有高仿耐克鞋 编辑:程序博客网 时间:2024/06/04 19:47
额…..继续整理笔记,set集合方法等,下次不用到处乱翻了..常见的应该就这些了吧……心虚…..
1.概念
python中集合概念和数学中一致,由一个或多个确定的元素构成的整体叫集合.
集合中元素是唯一的,无序的,集合中元素为不可迭代对象,即非列表和字典.
python 中 set 集合分为 可变集合set()和不可变集合frozenset()两种
所以同样,set中元素也不能为一个set,但是可以是一个frozenset
set() 创建(可变集合)
用{}表示,类型为set(),与字典不同的是集合set内部是单独元素来表示,而非键值对的形式
>>> a = ('a', 'b', 'v')>>> b = set(a) #tuple转set>>> b{'v', 'a', 'b'}>>> type(b)<class 'set'>>>> c = set() #创建空集合>>> type(c)<class 'set'>
2.set的方法
- set.add (x)
添加元素
>>> b.add('bb')>>> b{'v', 'a', 'bb', 'b'}
- set.remove(x)
删除元素
>>> b.remove('bb')>>> b{'v', 'a', 'b'}
- set.update(set2)
将set b合并到set a中
>>> b{'v', 'a', 'b'}>>> a = {1,2,3}>>> a{1, 2, 3}>>> b.update(a) # 将set a合并到set b中>>> b{1, 'v', 'a', 2, 3, 'b'} # b变化>>> a # a保持{1, 2, 3}
- set.pop()
与列表pop和字典popitem方法类似,效果都是移除其中元素并返回移除元素的值
由于set集合和dict字典类似都是无序的,并且set中只有值无key,所以移除时为随机移除
>>> a{1, 2, 3}>>>b = a.pop()>>>b1>>>a{2,3}
- set.clear()
与列表和字典clear方法类似,效果都是清空内部元素,并保留空集合
>>> a.clear()>>> aset()
- set.copy()
返回一个浅复制副本
>>> e = a.copy()>>> e{1, 2, 3}
- set.discard(obj)
和remove方法一样,都是移除set中的元素,
不同之处在于remove参数必须实际存在于set中,否则报错
而discard方法中,参数存在则移除,不存在也不会报错
>>> e{1, 2, 3}>>> e.discard(3) # 存在3则移除>>> e{1, 2}>>> e.discard(3) # 移除元素,即使不存在也不报错>>> e.remove(3) # 用remove移除不存在的元素,则报错Traceback (most recent call last): File "<stdin>", line 1, in <module>KeyError: 3
3. frozenset() 不可变集合
顾名思义,不可变集合,就是不可更改的集合了,创建后就不可更改了,所以也就没有各种方法了.因此,frozenset做为可哈希对象,具有不可变特性,自然也就可以作为字典key
tag:
python中所有不可改变的的对象,如字符串,元组tuple,不可变集合frozenset都是可哈希的
同样也就是说,可改变的容器如字典dict,列表list,可变集合set 则不可哈希unhashable
>>> d = forzenset() # 创建一个空的不可变集合>>> dforzenset()>>> d.add(1) # 不可修改,这里就报错了Traceback (most recent call last): File "<stdin>", line 1, in <module>AttributeError: 'frozenset' object has no attribute 'add'>>> hash(d) # 做为一个可哈希的对象,拥有固定的哈希值133156838395276>>> hash(b) # b是一个set,是一个可变集合,非固定,所以就没有hash值了,同样会提示报错Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: unhashable type: 'set'
4.操作
和我们数学中学过的差不多,python中关于集合set的操作,一般有并集,交集,差集,对称差集子集,超集等
- 并集
union 或者 | (管道符)
>>> a = set([1,2,3])>>> a{1, 2, 3}>>> b = set([3,4,5])>>> b{3, 4, 5}>>> a.union(b) # 并集{1, 2, 3, 4, 5}>>> a|b # 符号简写形式{1, 2, 3, 4, 5}
- 交集
intersection 或者 & (and符)
>>> a.intersection(b) #交集{3}>>> a & b #简写{3}
- 差集
difference 或者 - (减号)
>>> a.difference(b) # a-b的差集{1, 2}>>> b.difference(a) # b-a的差集{4, 5}>>> a-b #简写{1, 2}>>> b-a #简写{4, 5}
- 对称差集
symmetric_dfifference 或者 ^ 符 即除去交集部分
>>> a.symmetric_difference(b){1, 2, 4, 5}>>> a^b{1, 2, 4, 5}
- 子集
issubset 或 <
>>> d = {1,2}>>> d.issubset(a)True>>> d<aTrue
- 超集
issuperset 或 >
>>> a.issuperset(d)True>>> a>dTrue
阅读全文
0 0
- set()集合的概念、方法和操作
- python---集合set常用方法和操作
- map集合和set集合的遍历方法汇总
- 封装的概念和原理,set和get方法
- Delphi的set集合操作
- Set集合的基本操作
- python:集合set的操作
- java集合框架-List和Set和相关的方法
- 遍历List和Set集合的常用方法
- Set 集合以及Set集合的一些常用方法
- set集合和 list集合 的区别
- set集合和list集合的区别
- set集合和list集合的区别
- Python集合(set)类型的操作
- Python集合(set)类型的操作
- Python集合(set)类型的操作
- Python集合(set)类型的操作
- Python集合(set)类型的操作
- Flume使用大全之kafka source-kafka channel-hdfs(kerberos认证)
- 结构型-适配器模式(adapter)
- express配置babel
- yuv 信道等原理 yuv420 yuv444等
- eclipse 项目编译后文件位置
- set()集合的概念、方法和操作
- 小白成长记——Android基础之Android Studio开发常用快捷键
- 2017.8.7 GT考试 思考记录
- 剑指offer--包含min函数的栈
- Linuxbridge-tap研究
- 分享下学习Kotlin的历程-环境/简单使用
- 基于LinkedBlockingQueue的生产者消费者模型
- Laravel 发送邮件
- 哈希--直接定值法和除留取余法