集合的使用
Posted 东大网管
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合的使用相关的知识,希望对你有一定的参考价值。
- set(字符串),就把列表转换成集合。注意集合的大括号组成{},像字典,但是不是
- 取集合的交集:集合1.intersection(集合2)
- 取集合的并集:集合1.union(集合2)
- 取两个集合的差集:集合1.difference(集合2)=集合1在集合2里没有的数值
- 判断集合1是不是集合2的子集:集合1.issubset(集合2)
- 判断集合1是不是集合2的父集:集合1.issuperset(集合2)
- 反向差集(对称差集):把两个集合里都有的项,去除了。集合1.symmetric_difference(集合2)
- 如果两个集合没有交集,那么返回为True集合1.isdisjoint(集合2)
- 除了用英文单词来表示这些集合的关系,还可以用字符来表达求交集:交集1 & 交集2
- 求并集: 集合1 | 集合2
- 求差集:集合1-集合2,在集合1里不在集合2
- 求对称差集:集合1 ^ 集合2
- 增删改查:
- 增加:集合.add(x) #添加1项 集合.update{[1,2,3]} #添加多项
- 删除:集合.remove(x),指定删除x,如果x不存在会报错
- 集合.pop(x)随机删除一个数值,并返回这个数值。
- 集合.discard(x),删除指定一个值x,如果x不存在,不会报错。
- 集合的长度:len(集合)
- 测试x是否是s的成员:字符串,列表,字典,集合,全部都是这么写!
- x in s
- 测试x是否不是s的成员:
- x not in s
集合的特点
集合是一个无序的,不重复的数组组合
1、去重,找出2个列表里重复的项。把一个列表变成集合就自动去重了。
2、关系测试,测试两组数据之前的交集、差集、并集等关系
常用操作:
set(字符串),就把列表转换成集合。注意集合的大括号组成{},像字典,但是不是
这种写法,是直接把列表变成集合:
取集合的交集:
集合1.intersection(集合2)
取集合的并集:
集合1.union(集合2)
取两个集合的差集:
集合1.difference(集合2)=集合1在集合2里没有的数值
判断集合1是不是集合2的子集:
集合1.issubset(集合2)
判断集合1是不是集合2的父集:
集合1.issuperset(集合2)
反向差集(对称差集):把两个集合里都有的项,去除了。
集合1.symmetric_difference(集合2)
如果两个集合没有交集,那么返回为True
集合1.isdisjoint(集合2)
除了用英文单词来表示这些集合的关系,还可以用字符来表达
求交集:交集1 & 交集2
求并集: 集合1 | 集合2
求差集:集合1-集合2,在集合1里不在集合2
求对称差集:集合1 ^ 集合2
增删改查:
增加:
集合.add(x) #添加1项
集合.update{[1,2,3]} #添加多项
删除:
集合.remove(x),指定删除x,如果x不存在会报错
集合.pop(x)随机删除一个数值,并返回这个数值。
集合.discard(x),删除指定一个值x,如果x不存在,不会报错。
集合的长度:
len(集合)
测试x是否是s的成员:字符串,列表,字典,集合,全部都是这么写!
x in s
测试x是否不是s的成员:
x not in s
集合的浅复制:
集合.copy()
返回set集合的一个浅复制
等价操作符 | 说明 | |
所有集合类型 | ||
len(s) | 集合基数:集合s中元素个数 | |
set([obj]) | 可变集合工厂函数:ojb必须是支持迭代的,由obj中的元素创建集合,否则创建一个空集合 | |
frozenset([obj]) | 不可变集合工厂函数:执行方式好set()方法相同,但它返回的是不可变集合 | |
obj in s | 成员测试 | |
obj not in s | 非成员测试 | |
s == t | 等价测试 | |
s != t | 不等价测试 | |
s < t | (严格意义上)子集测试 | |
s.issubset(t) | s <= t | 子集测试 |
s > t | (严格意义上)超集测试 | |
s.issuperset(t) | s >= t | 超集测试 |
s.union(t) | s | t | 合并操作 |
s.intersec-tion(t) | s & t | 交集操作 |
s.difference(t) | s – t | 差分操作 |
s.symmetric_fifference(t) | s ^ t | 对称差分操作 |
s.copy() | 赋值操作:返回s的(浅复制)副本 | |
仅适用于可变集合 | ||
s.update(t) | s |= t | (Union)修改操作:将t中的成员添加s |
s.intersection_update(t) | s &= t | 交集修改操作:s中仅包括s和t中共有的成员 |
s.difference_update(t) | s -= t | 差修改操作:s中仅包括属于s但不属于t的成员 |
s.symmetric_difference_ update(t) | s ^= t | 对称差分修改操作:s中包括仅属于s或仅属于t的成员 |
s.add(obj) | 加操作:将obj添加到s | |
s.remove(obj) | 删除操作 | |
s.discard(obj) | 丢弃操作:remove()的友好版本,如果s中存在ojb,从s中删除它 | |
s.pop() | Pop操作:移除并返回s中的任意一个值 | |
s.clear() | 清除操作:移除s中的所有元素 |
以上是关于集合的使用的主要内容,如果未能解决你的问题,请参考以下文章
Groovymap 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )
Groovy集合遍历 ( 使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 | 代码示例 )
Groovy集合遍历 ( 使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 | 代码示例 )
Groovy集合遍历 ( 使用集合的 find 方法查找集合元素 | 闭包中使用 == 作为查找匹配条件 | 闭包中使用 is 作为查找匹配条件 | 闭包使用 true 作为条件 | 代码示例 )
Groovymap 集合 ( map 集合遍历 | 使用 map 集合的 find 方法遍历 map 集合 | 代码示例 )