(转)Python中集合(set)的基本操作以及一些常见的用法
原文: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)的基本操作以及一些常见的用法的更多相关文章
- Python中集合set()的使用及处理
在Python中集合(set)与字典(dict)比较相似,都具有无序以及元素不能重复的特点 1.创建set 创建set需要一个list或者tuple或者dict作为输入集合 重复的元素在set中会被自 ...
- python中的filter、map、reduce、apply用法
1. filter 功能: filter的功能是过滤掉序列中不符合函数条件的元素,当序列中要删减的元素可以用某些函数描述时,就应该想起filter函数. 调用: filter(function,seq ...
- python中集合set,字典dict和列表list的区别以及用法
python中set代表集合,list代表列表,dict代表字典 set和dict的区别在于,dict是存储key-value,每一个key都是唯一的,set相对于dict存储的是key,且key是唯 ...
- python中 Lambda,Map,Filter,Itertools,Generator高级函数的用法
Lambda 函数 Lambda 函数是一种比较小的匿名函数--匿名是指它实际上没有函数名. Python 函数通常使用 def a_function_name() 样式来定义,但对于 lambda ...
- python中使用 C 类型的数组以及ctypes 的用法
Python 在 ctypes 中为我们提供了类似C语言的数据类型, 它的用途(我理解的)可能是: (1) 与 其他语言(如 C.Delphi 等)写的动态连接库DLL 进行交换数据,因为 pytho ...
- python中os.path.isdir()等函数的作用和用法
一 用法和概念: Python中的os模块用于和系统进行交互,其中: 1 os.listdir()用于返回一个由文件名和目录名组成的列表,需要注意的是它接收的参数需要是一个绝对的路径. 2 os.pa ...
- python 中进制转换及format(),int()函数用法
python中数值型变量好像只能是十进制形式表示,其他类型变量只能以字符串形式存在,可以通过format函数将int类型变量转换成其他进制字符串,如下所示: v_code=15 # 2进制 x=for ...
- python中集合-set
集合-set 集合是高中数学中的一个概念 一堆确定的无序的唯一的数据,集合中每一个数据成为一个元素 # 集合的定义 s = set() print(type(s)) print(s) print(&q ...
- Python学习-31.Python中集合的一些操作
add方法: s = {1,2,3} s.add(4) print(s)# {1, 2, 3, 4} 同list的append方法,若调用s.add(3),则不会有任何影响.这点与C#中的HashSe ...
随机推荐
- 2018.08.02 洛谷P3355 骑士共存问题(最小割)
传送门 这题让我联想到一道叫做方格取数问题的题,如果想使摆的更多,就要使不能摆的更少,因此根据骑士的限制条件建图,求出至少有多少骑士不能摆,减一减就行了. 代码: #include<bits/s ...
- 2018.07.26NOIP模拟 魔法数字(数位dp)
魔法数字 题目背景 ASDFZ-NOIP2016模拟 题目描述 在数论领域中,人们研究的基础莫过于数字的整除关系.一般情况下,我们说整除总在两个数字间进行,例如 a | b(a能整除b)表示 b 除以 ...
- Yii框架请求
$request = Yii::$app->request; $get = $request->get(); // 等价于: $get = $_GET; $id = $request-&g ...
- hdu-1058(动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058 题意:求只由2,3,5,7的乘积组成的数,输出格式见output 思路:开始想打表,后来打表超时 ...
- Django入门指南-第7章:模板引擎设置(完结)
http://127.0.0.1:8000/ <!--templates/home.html--> <!DOCTYPE html> <html> <head& ...
- 代码自动生成工具MyGeneration之一
前段时间用C#做网站,用到了大量数据库相关的东西.网站采用3层结构,即数据访问层(Data Access Layer),业务逻辑层(Business Logic Layer),页面表现层().做了一段 ...
- const define static extern 关键词详解
const const关键词并不能把一个变量变成一个常量, 在符号前加上const表示这个符号不能被赋值, 即他的值对这个符号来说是只读的, 但并不代表这个值不能用其他方法去改变. 通过下面的例子就能 ...
- The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly 上传一份代码的时候,出现了这个错误,然后就没有成功上传. 背景操作 主要是进行svn转换到git时候出错的,转换的 ...
- [Android]高低API版本兼容之@TargetApi
使用@TargetApi annotaion, 使高版本API的代码在低版本SDK不报错 例如: AsyncTask.THREAD_POOL_EXECUTOR, 这个静态变量是API11才有的, 设置 ...
- 作为CTO如何做技术升级
升级技术架构,先要革新观念,最后才是技术问题 升级技术架构,不仅仅是技术升级 说到升级架构,大家第一个都会想到,是不是对技术升级一下就可以了? 我认为不是,技术架构升级要求的是整个公司的升级. 技术架 ...