原文:http://blog.51cto.com/10616534/1944841

Python除了List、Tuple、Dict等常用数据类型外,还有一种数据类型叫做集合(set),集合的最大特点是:集合里边的元素是不可重复的并且集合内的元素还是无序的,所以一般情况下集合常用的两个场景是:1.去重(如:列表去重);2.关系测试(如:取交集、取并集、取差集等)

1)集合包含一组无序的对象,可以使用set()函数来像下边的方式一样来创建集合

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
#创建一个数值集合
set1 = set([1,2,3,4])
#创建一个字符集合 注意:从输出结果中我们会看到l只出现了一次
set2 = set("HelloWorld!")
print('set1 %s' % set1)
print('set2 %s' % set2)
'''运行结果
set1 {1, 2, 3, 4}
set2 {'d', 'o', 'e', 'H', 'l', 'W', 'r', '!'}
'''
 

2)去重,即可能在一些特殊的场景需要用到,实现去除掉列表中的重复元素

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
#列表去重比较简单
list1 = [3,3,3,4,5,3]
set1 = set(list1)
print("list1去重后的set集合:",set1)
#将如中后的集合在转化成一个新列表
new_list = [i for i in set1]
print("list1去重后的list列表:",new_list)
'''运行结果
list1去重后的set集合: {3, 4, 5}
list1去重后的list列表: [3, 4, 5]
'''
 

3)关系测试,即一些集合的最基本操作,如集合取交集、取并集、取差集、判断一个集合是不是另一个集合的子集或者父集等。

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
set1 = set([1,2,3,4,5])
set2 = set([3,4,5,6,7])
#取交集
set3 = set1.intersection(set2)
# set3 = set1 & ste2 #取交集,与intersection()效果相同
print("set1和set2的交集为:",set3)
#取并集
set4 = set1.union(set2)
#set4 = set1 | set2 #取并集,与union()效果相同
print("set1和set2的交集为:",set4)
#取差集 这个地方要稍稍注意一下,防止进坑
set5 = set1.difference(set2)
#set5 = set1 - set2 #取差集 ,与difference()效果相同
print("set1与set2的差集为:",set5)
set6 = set2.difference(set1)
print("set2与set1的差集为:",set6)
#对称差集 -----即去掉两个集合的共同的部分
set7 = set1.symmetric_difference(set2)
#set7 = set1 ^ set2 #对称差集, 与symmetric_difference()效果相同
print("去掉两个集合的共同的部分:",set7)
#判断是否是set1是否是set2的子集
flag1 = set1.issubset(set2)
print("print(判断是否是set1是否是set2的子集):",flag1)
#判断是否是set1是否是set2的父集
flag2 = set1.issuperset(set2)
print("判断是否是set1是否是set2的父集:",flag2)
'''运行结果如下:
set1和set2的交集为: {3, 4, 5}
set1和set2的交集为: {1, 2, 3, 4, 5, 6, 7}
set1与set2的差集为: {1, 2}
set2与set1的差集为: {6, 7}
去掉两个集合的共同的部分: {1, 2, 6, 7}
print(判断是否是set1是否是set2的子集): False
判断是否是set1是否是set2的父集: False
'''
 

4)集合的一些其它基本操作

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
#输出集合中的元素
#注意集合与列表和元组不同,集合是无序的,所以无法通过数字进行索引获取某一个元素的值
set1 = set([1,2,3,4])
for i in set1:
print (i)
#向集合中添加一个元素
set1.add(5)
print("向集合中添加一个元素5后:",set1)
#删除一个元素
set1.remove(1)
print("从集合中删除元素1后:",set1)
#计算集合的长度
l = len(set1)
print("集合的长度为:",l)
#判断某个元素是否在集合内
flag1 = 2 in set1
print("判断元素2是否在集合内:",flag1)
#断某个元素是否不在集合内
flag2 = 3 not in set1
print("判断元素3是否不在集合内:",flag2)
#对集合进行一次浅复制
set2 = set1.copy()
print("对集合进行一次浅复制:",set2)
'''运行结果如下:
1
2
3
4
向集合中添加一个元素5后: {1, 2, 3, 4, 5}
从集合中删除元素1后: {2, 3, 4, 5}
集合的长度为: 4
判断元素2是否在集合内: True
判断元素3是否不在集合内: False
对集合进行一次浅复制: {2, 3, 4, 5}
'''
 

以上是集合(set)的一些比较常用操作的示例,对于集合的一些其它操作,这里就不在一一举例说明了。

(转)Python中集合(set)的基本操作以及一些常见的用法的更多相关文章

  1. Python中集合set()的使用及处理

    在Python中集合(set)与字典(dict)比较相似,都具有无序以及元素不能重复的特点 1.创建set 创建set需要一个list或者tuple或者dict作为输入集合 重复的元素在set中会被自 ...

  2. python中的filter、map、reduce、apply用法

    1. filter 功能: filter的功能是过滤掉序列中不符合函数条件的元素,当序列中要删减的元素可以用某些函数描述时,就应该想起filter函数. 调用: filter(function,seq ...

  3. python中集合set,字典dict和列表list的区别以及用法

    python中set代表集合,list代表列表,dict代表字典 set和dict的区别在于,dict是存储key-value,每一个key都是唯一的,set相对于dict存储的是key,且key是唯 ...

  4. python中 Lambda,Map,Filter,Itertools,Generator高级函数的用法

    Lambda 函数 Lambda 函数是一种比较小的匿名函数--匿名是指它实际上没有函数名. Python 函数通常使用 def a_function_name() 样式来定义,但对于 lambda ...

  5. python中使用 C 类型的数组以及ctypes 的用法

    Python 在 ctypes 中为我们提供了类似C语言的数据类型, 它的用途(我理解的)可能是: (1) 与 其他语言(如 C.Delphi 等)写的动态连接库DLL 进行交换数据,因为 pytho ...

  6. python中os.path.isdir()等函数的作用和用法

    一 用法和概念: Python中的os模块用于和系统进行交互,其中: 1 os.listdir()用于返回一个由文件名和目录名组成的列表,需要注意的是它接收的参数需要是一个绝对的路径. 2 os.pa ...

  7. python 中进制转换及format(),int()函数用法

    python中数值型变量好像只能是十进制形式表示,其他类型变量只能以字符串形式存在,可以通过format函数将int类型变量转换成其他进制字符串,如下所示: v_code=15 # 2进制 x=for ...

  8. python中集合-set

    集合-set 集合是高中数学中的一个概念 一堆确定的无序的唯一的数据,集合中每一个数据成为一个元素 # 集合的定义 s = set() print(type(s)) print(s) print(&q ...

  9. Python学习-31.Python中集合的一些操作

    add方法: s = {1,2,3} s.add(4) print(s)# {1, 2, 3, 4} 同list的append方法,若调用s.add(3),则不会有任何影响.这点与C#中的HashSe ...

随机推荐

  1. 被弃用的php函数以及被那个代替

      原文链接 http://blog.csdn.net/a11085013/article/details/8937848   下面列举了部分被弃用的函数:      call_user_method ...

  2. ABP框架系列之二十三:(EF-MySql-Integration-EF-MySql-集成)

    Introduction While our default templates designed to work with SQL Server, you can easily modify the ...

  3. 2017 pycharm 激活码

    BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  4. SecureCRT和乱码

    示例: # ls /usr/local/r3c/bin/lib /bin/ls: /usr/local/r3c/bin/lib: ????????? 查看系统字符集设置: # locale LANG= ...

  5. 安装hue-3.11.0

    1) 配置HDFS HttpFS和WebHDFS 如果HDFS是HA方式部署的,则只能使用HttpFS,而不能用WebHDFS. 2) 安装依赖: apr-iconv-1.2.1 confuse-3. ...

  6. hdu 5011 Nim+拿完分堆

    http://acm.hdu.edu.cn/showproblem.php?pid=5011 有N堆珠子,两个人轮流拿,最少拿一个,可以全拿,每次只能从一个堆里拿,不能从多堆同时拿:拿完之后该人还有一 ...

  7. 短URL

    短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaurl.cn等. 我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http://url.c ...

  8. SSD测试第一神器——FIO

    原文 地址 http://www.ssdfans.com/ssd%E6%B5%8B%E8%AF%95%E7%AC%AC%E4%B8%80%E7%A5%9E%E5%99%A8-fio-2/ 对于SSD性 ...

  9. NSUserDefaults用法详解

    一.了解NSUserDefaults以及它可以直接存储的类型 NSUserDefaults是一个单例,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一 ...

  10. AOP编程的学习总结

    前几天听到一个同事说起AOP 然后就想学习下应用到项目中去,自己也是在网上找了很多的资料,之后发现 网上的大部分资料的内容几乎都是如出一撤,于是自己就整理了一下再加上这几天的学习总结到的知识写到这篇文 ...