python set(集合)

简介:
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
集合是一个无序的,不重复的数据组合,它的主要作用如下:
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之前的交集、差集、并集等关系
集合(set):把不同的元素组成一起形成集合,是python基本的数据类型。
集合元素(set elements):组成集合的成员(不可重复)

>>> li=[1,2,'a','b'] 
>>> s =set(li)
>>> print(s)             # {1, 2, 'a', 'b'}

>>> li2=[1,2,1,'a','a']
>>> s=set(li2)
>>> print(s)             #{1, 2, 'a'}      重复元素在set中自动被过滤:
 #注意,传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1233个元素,
 显示的顺序也不表示set是有序的。。

集合的相关操作  

1、创建集合

由于集合没有自己的语法格式,只能通过集合的工厂方法set()和frozenset()创建

>>> s1 = set('alvin')
>>> s2= frozenset('yuan')
>>> print(s1,type(s1))               #{'l', 'v', 'i', 'a', 'n'} <class 'set'>
>>> print(s2,type(s2))               #frozenset({'n', 'y', 'a', 'u'}) <class 'frozenset'>

2、访问集合

由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用innot in来访问或判断集合元素。

>>> s1 = set('alvin')
>>> print('a' in s1)     #True
>>> print('b' in s1)     #False
>>> #s1[1]  #TypeError: 'set' object does not support indexing
>>> for i in s1:
>>>     print(i)        #l     i    n   v    a

3、更新集合

可使用以下内建方法来更新:

s.add()
s.update()

注意只有可变集合才能更新:

>>> #s1 = frozenset('alvin')
>>> #print(s1)           #frozenset({'a', 'n', 'i', 'v', 'l'})
>>> #s1.add("ccdc")      #AttributeError: 'frozenset' object has no attribute 'add'
>>> s2 = set('alvin')
>>> s2.add('mm')
>>> print(s2)  # {'mm', 'l', 'n', 'a', 'i', 'v'}
>>> s2.update('HO')  # 添加多个元素
>>> print(s2)  # {'mm', 'l', 'n', 'a', 'i', 'H', 'O', 'v'}

4、删除集合
s.remove()
>>> s2 = set('alvin')
>>> >>> print(s2)  # { 'l', 'n', 'a', 'i', 'v'}
>>> s2.remove('l')
>>> print(s2)  # {'n', 'a', 'i',  'v'}
>>> del s2   #删除集合本身 
>>> print(s2)    #NameError: name 's2' is not defined

四、集合类型操作符 

1   in ,not in
2   集合等价与不等价(==, !=)

3   子集、超集
s=set('alvinyuan')
s1=set('alvin')
print('v' in s)
print(s1<s)

4   联合(|)
联合(union)操作与集合的or操作其实等价的,联合符号有个等价的方法,union()。
s1=set('alvin')
s2=set('yuan')
s3=s1|s2
print(s3)  #{'a', 'l', 'i', 'n', 'y', 'v', 'u'}
print(s1.union(s2)) #{'a', 'l', 'i', 'n', 'y', 'v', 'u'} 

5、交集(&)
与集合and等价,交集符号的等价方法是intersection()
s1=set('alvin')
s2=set('yuan')
s3=s1&s2
print(s3)  #{'n', 'a'}

print(s1.intersection(s2)) #{'n', 'a'}

6、查集(-)
等价方法是difference()
s1=set('alvin')
s2=set('yuan')
s3=s1-s2
print(s3)  #{'v', 'i', 'l'}

print(s1.difference(s2)) #{'v', 'i', 'l'} 

7、对称差集(^)
对称差分是集合的XOR(‘异或’),取得的元素属于s1,s2但不同时属于s1和s2.其等价方法symmetric_difference()
s1=set('alvin')
s2=set('yuan')
s3=s1^s2
print(s3)  #{'l', 'v', 'y', 'u', 'i'}

print(s1.symmetric_difference(s2)) #{'l', 'v', 'y', 'u', 'i'}

应用

'''最简单的去重方式'''
lis = [1,2,3,4,1,2,3,4]
print list(set(lis))    #[1, 2, 3, 4]


















本文转自lb沫51CTO博客,原文链接:http://blog.51cto.com/13562606/2059654,如需转载请自行联系原作者
相关文章
|
28天前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
1月前
|
Java 程序员 C语言
赶快收藏!全网最佳Set集合详解:HashSet、TreeSet!
面试官:那TreeSet要怎么定制排序?TreeSet的自定义排序我们要利用Comparator接口,通过向TreeSet传入自定义排序规则的Comparator来实现。官方源码是这么解释的,南友们看一看。// 构造一个新的空树集,根据指定的比较器进行排序。// 插入到集合中的所有元素都必须能够通过指定的比较器相互比较: comparator. compare(e1, e2)不得对集合中的任何元素e1和e2抛出ClassCastException。
赶快收藏!全网最佳Set集合详解:HashSet、TreeSet!
|
1月前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
20天前
|
数据采集 编解码 算法
Github | 推荐一个Python脚本集合项目
Github | 推荐一个Python脚本集合项目
|
19天前
|
索引 Python 容器
为什么Python中会有集合set类型?
为什么Python中会有集合set类型?
|
20天前
|
Python
python中set和frozenset方法和区别
python中set和frozenset方法和区别
|
30天前
|
存储 NoSQL 算法
Redis6入门到实战------ 三、常用五大数据类型(列表(List)、集合(Set)、哈希(Hash)、Zset(sorted set))
这是关于Redis 6入门到实战的文章,具体内容涉及Redis的五大数据类型:列表(List)、集合(Set)、哈希(Hash)、有序集合(Zset(sorted set))。文章详细介绍了这些数据类型的特点、常用命令以及它们背后的数据结构。如果您有任何关于Redis的具体问题或需要进一步的帮助,请随时告诉我。
|
28天前
|
存储 索引 Python
五:《Python基础语法汇总》— 列表&元组&集合
本篇文章讲解了关于列表;元组和集合这三个基本数据类型的常用方法与函数。及同一性操作符;成员判断符;浅拷贝与深拷贝等多方面的知识点
23 4
|
28天前
|
Java
【Java集合类面试二十二】、Map和Set有什么区别?
该CSDN博客文章讨论了Map和Set的区别,但提供的内容摘要并未直接解释这两种集合类型的差异。通常,Map是一种键值对集合,提供通过键快速检索值的能力,而Set是一个不允许重复元素的集合。
|
28天前
|
JavaScript 前端开发 Python
成功解决:Can‘t find Python executable “python“, you can set the PYTHON env variable.
这篇文章分享了作者在运行前端Vue项目时遇到的关于Python执行环境的问题和解决方法。问题是由于找不到Python可执行文件导致的编译错误,解决方法包括安装编译环境、卸载并重新安装出现问题的`node-sass`包,并重新执行`npm install`和`npm run dev`。
成功解决:Can‘t find Python executable “python“, you can set the PYTHON env variable.