python之set集合,基础篇
集合:set
特点:
1>、无序 ,因为集合是无序的,所以不可用下标值查询,也不可切片
2>、去重 ,一个集合内不能有两个相同的元素
3>、可添加,可删除,不可修改等等
4>、集合内的元素可以是任何类型,字符串,列表,元组
1,定义一个空集合
name_set = set()
需要注意的是:
name_str = "" --定义空字符串 name_list = [] --定义空列
name_list = list() --定义空列表
name_tuple = () --定义空元组
name_tuple = tuple()--定义空元组
name_set = set() --定义空集合
name_dict = {} --定义空字典
name_dict = dict() --定义空字典
2,定义一个非空集合
name_set = {'a', 'b', 'c'}
print(name_set)
注意的是,如果定义的时候有两个相同的元素,因为集合是去重的,所以....,你懂的!
name_set = {'a', 'b','b', 'c'}
print(name_set)
print(type(name_set))

3,数据类型转换,把列表转换为集合--(自动去重)
name_list = ['a', 'c', 'b', 'a']
name_set = set(name_list) # 强制转换
print(name_set)

4,集合运算
集合之间也可进行数学集合运算(例如:并集、交集,差集,对称差集等),可用相应的操作符或方法来实现。
1>交集
两个集合 A 和 B 的交集是含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合。
intersection() 或者 &
name1_list = ["a", "b", "c"]
name2_list = ["a", "c", "m"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.intersection(name2_set))
print(name1_set & name2_set)

2>,并集
一组集合的并集是这些集合的所有元素构成的集合,
union() 或者 |
name1_list = ["a", "b", "c"]
name2_list = ["a", "c", "m"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.union(name2_set))
print(name1_set | name2_set)

3>,差集
A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合
difference() 或者 -
name1_list = ["a", "b", "c"]
name2_list = ["a", "c", "m"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name2_set.difference(name1_set))
print(name2_set - name1_set)

4>,对称差集
集合A与集合B中只有集合A或集合B有的元素的集合
symmetric_difference() 或者 ^
name1_list = ["a", "b", "c"]
name2_list = ["a", "c", "m"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.symmetric_difference(name2_set))
print(name1_set ^ name2_set)

5>,是否是子集
子集,为某个集合中一部分的集合,故亦称部分集合,即集合A中所有的元素都是集合B中的元素,则集合A是集合B的子集。
issubset() <= 是返回True,不是返回False
name1_list = ["a", "b", "c"]
name2_list = ["a", "c"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name2_set.issubset(name1_set))
print(name2_set <= name1_set)
print(name1_set<=name2_set)

6>,是否是父集
即集合A中所有的元素都是集合B中的元素,则集合B是集合A的子集。
issuperset() >= 是父集返回True,不是则返回False
name1_list = ["a", "b", "c"]
name2_list = ["a", "c"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.issuperset(name2_set))
print(name1_set >= name2_set)

7>,是否有交集,
判断两个集合是否无交集:无交集返回True,有交集返回False
isdisjoint()
name1_list = ["a", "b", "c"]
name2_list = ["a", "c"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.isdisjoint(name2_set))

5,集合的方法
name_set = set()
print(dir(name_set))
1>,add(),
新增1个元素
name_{'a', 'b'}
name_set.add("c")
print(name_set)

2>,clear()
清除set集合中所有元素
name_set = {'a', 'b'}
name_set.clear()
print(name_set)
3>,discard()
删除集合中某个元素,元素存在则删除,不存在则不报错
name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_set.discard("b") # 删除存在的元素 print(name_set)

4>,pop()
删除随机一个元素.
name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_set.pop()
print(name_set)
5>,remove()
删除某个元素,如果元素存在则删除,不存在则报错
name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_set.remove("b") #存在的元素 print(name_set)

6>,update()
添加多个元素
name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_set.update({"m", "n", "b"}) # 列表、元组、集合、字符串
name_set.update(['mnb'])
print(name_set)

6,类型转化
列表 或者 元组转化为 集合
name_tuple = ("a", "b", 'c')
name_set = set(name_tuple)
name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_list = list(name_set) # 集合转换为列表
print(name_list)
7,因为集合是去重的,所有对集合做多的用法就是去重
Mysql中去重的方法有distinct,group by (分组)
python中关于去重的方式就是转化成集合,然后在转化回去。
注意的是,如果字符串想转化为集合,需要先转化成列表,然后再转化成集合。
python之set集合,基础篇的更多相关文章
- 智普教育Python视频教程之入门基础篇,python笔记
智普教育Python视频教程之入门基础篇,python笔记 print id()内存地址 type()变量类型 windows命令行下edit命令 python数据类型不需要指定类型 定义hostna ...
- Python(三)基础篇之「模块&面向对象编程」
[笔记]Python(三)基础篇之「模块&面向对象编程」 2016-12-07 ZOE 编程之魅 Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...
- Python(四)基础篇之「文件对象&错误处理」
[笔记]Python(四)基础篇之「文件对象&错误处理」 2016-12-08 ZOE 编程之魅 Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...
- Python学习笔记之基础篇(-)python介绍与安装
Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...
- Python学习之路基础篇--07Python基础+编码、集合 和 深浅Copy
1 小数据池(节省内存) 只有数字和字符串中内存,储存在同一个内存地址中 数字的范围在-5~256中,字符串有以下两个特点:不能含有特殊字符,还有就s*20 不是同一个地址,而要*21就不是了 2 编 ...
- Python 学习笔记(基础篇)
背景:今年开始搞 Data science ,学了 python 小半年,但一直没时间整理整理.这篇文章很基础,就是根据廖雪峰的 python 教程 整理了一下基础知识,再加上自己的一些拓展,方便自己 ...
- 【新手学Python】一、基础篇
由于以前处理数据用Matlab和C,最近要处理大量文本文件,用C写实在是太繁琐,鉴于Python的强大文本处理能力,以及其在Deep Learning上有着很大优势,本人打算从即日起学习Python, ...
- python学习之路基础篇(第五篇)
前四天课程回顾 1.python简介 2.python基本数据类型 类: int:整型 | str:字符串 | list:列表 |tuple:元组 |dict:字典 | set:集合 对象: li = ...
- python学习之路基础篇(第四篇)
一.课程内容回顾 1.python基础 2.基本数据类型 (str|list|dict|tuple) 3.将字符串“老男人”转换成utf-8 s = "老男人" ret = by ...
- Python学习总结之一 -- 基础篇
Python学习第一篇 一:写在前面 啊,最近我的新博客一直都没有更新学习内容了,只是最近一直都在忙着寻找实习机会(或许这只是一个借口,真实原因是我太懒惰了,改改改!).终于今天又投递了几个新的实习职 ...
随机推荐
- (代替人类)很多操作都在Settings里面。 5.安装第三方库
2020-02-01 pycharm 使用教程 LingSmart关注 0.0842020.02.07 15:08:50字数 1,394阅读 680 实在无聊,就来学习吧.学习pycharm的使用教程 ...
- Linux服务之nginx服务篇四(配置https协议访问)
一.配置nginx支持https协议访问 编译安装nginx的时候需要添加相应的模块--with-http_ssl_module和--with-http_gzip_static_module(可通过/ ...
- C/C++ 复习
本文总结一下C++面试时常遇到的问题.C++面试中,主要涉及的考点有 关键字极其用法,常考的关键字有const, sizeof, typedef, inline, static, extern, ne ...
- xml 解析之 JDOM解析
JDOM 是一种使用 XML 的独特 Java 工具包,用于快速开发 XML 应用程序.JDOM 是一个开源项目,它基于树形结构,利用纯 Java 的技术对 XML 文档实现解析.生成.序列化及多种操 ...
- Synchronize 和 volatile 的区别
1. 在应用层面来讲 a. volatile是线程同步的轻量级实现,所以volatile的性能要比synchronize好: volatile只能用于修饰变量,synchronize可以用于修饰方法. ...
- PHP转JAVA开发30分钟实战攻略
服务端开发中,有很多知识是相通的,例如mysql,redis,http协议等. 基于这些基础,在编程语言上的转变并不困难. 本文主要从下面几点出发,讲述如何快速从php开发转为java开发: 使用框架 ...
- Web前端自动化测试Cypress实践总结
本文主要首先主要介绍了什么是自动化测试,接着对常用的自动化测试框架进行了对比分析,最后,介绍了如果将自动化测试框架Cypress运用在项目中. 一.自动化测试概述 为了保障软件质量,并减少重复性的测试 ...
- DDD中实体与值对象是干什么的
实体值对象的含义 我们前面已经讲过领域的概念, 今天来讲讲实体, 实体是我们进行设计领域模型时的基础单元, 与之有关的是值对象, 接下来先梳理一下实体以及值对象的含义,然后讲讲他们俩的关系, 希望通过 ...
- 车载智能HUD
车载智能HUD 从 HUD 到行车记录仪再到后视镜,最近有不少团队都发布了自己的车载智能硬件. 什么是 HUD? HUD 全称抬头数字显示仪 (Heads Up Display),又叫平视显示系统,简 ...
- fiddler概念及原理
一.什么是fiddler? fiddler是位于客户端与服务器端的HTTP代理,它能够记录客户端与服务器之间所有的HTTP请求,可以针对特定的HTTP请求,分析请求数据,设置断点,调试WEB应用,修改 ...