【Python入门之】SET
来源:互联网 发布:构造函数 java 编辑:程序博客网 时间:2024/05/16 07:17
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.
sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。
下面来点简单的小例子说明把。
>>> x = set('spam')>>> y = set(['h','a','m'])>>> x, y(set(['a', 'p', 's', 'm']), set(['a', 'h', 'm']))
再来些小应用。
>>> x & y # 交集set(['a', 'm'])>>> x | y # 并集set(['a', 'p', 's', 'h', 'm'])>>> x - y # 差集set(['p', 's'])
记得以前个网友提问怎么去除海量列表里重复元素,用hash来解决也行,只不过感觉在性能上不是很高,用set解决还是很不错的,示例如下:
>>> a = [11,22,33,44,11,22]>>> b = set(a)>>> bset([33, 11, 44, 22])>>> c = [i for i in b]>>> c[33, 11, 44, 22]
很酷把,几行就可以搞定。
1.8 集合
集合用于包含一组无序的对象。要创建集合,可使用set()函数并像下面这样提供一系列的项:
s = set([3,5,9,10]) #创建一个数值集合t = set("Hello") #创建一个唯一字符的集合
与列表和元组不同,集合是无序的,也无法通过数字进行索引。此外,集合中的元素不能重复。例如,如果检查前面代码中t集合的值,结果会是:
>>> tset(['H', 'e', 'l', 'o'])
注意只出现了一个’l’。
集合支持一系列标准操作,包括并集、交集、差集和对称差集,例如:
a = t | s # t 和 s的并集b = t & s # t 和 s的交集c = t – s # 求差集(项在t中,但不在s中)d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)
基本操作:
t.add('x') # 添加一项s.update([10,37,42]) # 在s中添加多项使用remove()可以删除一项:t.remove('H')len(s)set 的长度x in s测试 x 是否是 s 的成员x not in s测试 x 是否不是 s 的成员s.issubset(t)s <= t测试是否 s 中的每一个元素都在 t 中s.issuperset(t)s >= t测试是否 t 中的每一个元素都在 s 中s.union(t)s | t返回一个新的 set 包含 s 和 t 中的每一个元素s.intersection(t)s & t返回一个新的 set 包含 s 和 t 中的公共元素s.difference(t)s - t返回一个新的 set 包含 s 中有但是 t 中没有的元素s.symmetric_difference(t)s ^ t返回一个新的 set 包含 s 和 t 中不重复的元素s.copy()返回 set “s”的一个浅复制
请注意:union(), intersection(), difference() 和 symmetric_difference() 的非运算符(non-operator,就是形如 s.union()这样的)版本将会接受任何 iterable 作为参数。相反,它们的运算符版本(operator based counterparts)要求参数必须是 sets。这样可以避免潜在的错误,如:为了更可读而使用 set(‘abc’) & ‘cbs’ 来替代 set(‘abc’).intersection(‘cbs’)。从 2.3.1 版本中做的更改:以前所有参数都必须是 sets。
另外,Set 和 ImmutableSet 两者都支持 set 与 set 之间的比较。两个 sets 在也只有在这种情况下是相等的:每一个 set 中的元素都是另一个中的元素(二者互为subset)。一个 set 比另一个 set 小,只有在第一个 set 是第二个 set 的 subset 时(是一个 subset,但是并不相等)。一个 set 比另一个 set 打,只有在第一个 set 是第二个 set 的 superset 时(是一个 superset,但是并不相等)。
子 set 和相等比较并不产生完整的排序功能。例如:任意两个 sets 都不相等也不互为子 set,因此以下的运算都会返回 False:a
- Python入门 之 Set
- 【Python入门之】SET
- Python入门之dict和set
- Python入门之(数字,set,动态类型)
- Python基础入门之Dict和Set类型一
- Python基础入门之Dict和Set类型二
- python之set
- Python之集合(set)
- python 之 set
- Python序列之set
- Hibernate入门之Set 映射
- python3入门之集合set
- python入门1之 list、tuple、dict、set的基本要点
- Python学习之set()集合
- Python基础数据结构之set
- Python数据结构之集合Set
- Python基本数据类型之set
- Python 之dict和set
- 如何通俗地理解 Gradle?
- 决策和循环、函数
- springboot学习思路及误区
- 1024. 科学计数法 (20)
- iOS开发之opencv学习笔记四:使用feature2d识别图片
- 【Python入门之】SET
- 批量注册函数名方法机制
- spring mvc 校验框架
- 为什么安卓系统越用越卡?
- BrnShop项目中如何自定义插件
- Effective Modern C++ Item Lists
- “玲珑杯”线上赛 Round #15 河南专场 F咸鱼文章
- R语言 向量
- 软件工程中的那些图:系统流程图,程序流程图和数据流图