集合: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集合,基础篇的更多相关文章

  1. 智普教育Python视频教程之入门基础篇,python笔记

    智普教育Python视频教程之入门基础篇,python笔记 print id()内存地址 type()变量类型 windows命令行下edit命令 python数据类型不需要指定类型 定义hostna ...

  2. Python(三)基础篇之「模块&面向对象编程」

    [笔记]Python(三)基础篇之「模块&面向对象编程」 2016-12-07 ZOE    编程之魅  Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...

  3. Python(四)基础篇之「文件对象&错误处理」

    [笔记]Python(四)基础篇之「文件对象&错误处理」 2016-12-08 ZOE    编程之魅  Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...

  4. Python学习笔记之基础篇(-)python介绍与安装

    Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...

  5. Python学习之路基础篇--07Python基础+编码、集合 和 深浅Copy

    1 小数据池(节省内存) 只有数字和字符串中内存,储存在同一个内存地址中 数字的范围在-5~256中,字符串有以下两个特点:不能含有特殊字符,还有就s*20 不是同一个地址,而要*21就不是了 2 编 ...

  6. Python 学习笔记(基础篇)

    背景:今年开始搞 Data science ,学了 python 小半年,但一直没时间整理整理.这篇文章很基础,就是根据廖雪峰的 python 教程 整理了一下基础知识,再加上自己的一些拓展,方便自己 ...

  7. 【新手学Python】一、基础篇

    由于以前处理数据用Matlab和C,最近要处理大量文本文件,用C写实在是太繁琐,鉴于Python的强大文本处理能力,以及其在Deep Learning上有着很大优势,本人打算从即日起学习Python, ...

  8. python学习之路基础篇(第五篇)

    前四天课程回顾 1.python简介 2.python基本数据类型 类: int:整型 | str:字符串 | list:列表 |tuple:元组 |dict:字典 | set:集合 对象: li = ...

  9. python学习之路基础篇(第四篇)

    一.课程内容回顾 1.python基础 2.基本数据类型  (str|list|dict|tuple) 3.将字符串“老男人”转换成utf-8 s = "老男人" ret = by ...

  10. Python学习总结之一 -- 基础篇

    Python学习第一篇 一:写在前面 啊,最近我的新博客一直都没有更新学习内容了,只是最近一直都在忙着寻找实习机会(或许这只是一个借口,真实原因是我太懒惰了,改改改!).终于今天又投递了几个新的实习职 ...

随机推荐

  1. canal 实现Mysql到Elasticsearch实时增量同步

    简介: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据 ...

  2. 攻防世界(九)PHP2

    攻防世界系列:PHP2  1.打开什么信息也没有. 尝试各种首页index.php index.html 加 [F12]没有结果,最后发现是index.phps .phps文件是什么? phps文件就 ...

  3. Alien 魔法:RPM 和 DEB 互转

    Alien 魔法:RPM 和 DEB 互转 作者: Gabriel Cánepa 译者: LCTT joeren | 2015-08-31 10:45   评论: 6 收藏: 10 正如我确信,你们一 ...

  4. 【备忘】ffmpeg推流命令

    1 组播推流 ffmpeg -re -i "D:\\OTT\\adghg2323.mp4" -vcodec libx264 -vprofile baseline -level 30 ...

  5. 9.11 strace:跟踪进程的系统调用 、ltrace:跟踪进程调用库函数

    strace 是Linux环境下的一款程序调试工具,用于检查一个应用程序所使用的系统调用以及它所接收的系统信息.strace会追踪程序运行时的整个生命周期,输出每一个系统调用的名字.参数.返回值和执行 ...

  6. 链路追踪_SkyWalking的部署及使用

    关于链路追踪,目前比较主流是Cat,Zipkin,SkyWalking等这些工具.这篇文章主要介绍关于SkyWalking工具的. 为什么用SkyWalking,因为它基本没有代码侵入,只这一点就足够 ...

  7. HTML中option的单页调用

    我们在用到下拉列表框select时,需要对选中的<option>选项触发事件,其实<option>本身没有触发事件方法,我们只有在select里的 onchange方法里触发. ...

  8. NGINX缓存使用官方指南

    我们都知道,应用程序和网站一样,其性能关乎生存.但如何使你的应用程序或者网站性能更好,并没有一个明确的答案.代码质量和架构是其中的一个原因,但是在很多例子中我们看到,你可以通过关注一些十分基础的应用内 ...

  9. 2.5D Visual Sound:CVPR2019论文解析

    2.5D Visual Sound:CVPR2019论文解析 论文链接: http://openaccess.thecvf.com/content_CVPR_2019/papers/Gao_2.5D_ ...

  10. 使用Keil语言的嵌入式C编程教程(上)

    使用Keil语言的嵌入式C编程教程(上) Embedded C Programming Tutorial with Keil Language Embedded System 嵌入式系统是指以单片机为 ...