集合: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. Linux_防火墙与SElinux

    一.防火墙与SElinux 1.防火墙和selinux 防火墙 iptables          默认允许所以 firewalld         默认拒绝所有 ebtables 不认识,不管 se ...

  2. python文件处理(对比和筛选)版本2

    场景:对比两个txt文件的差异,将对比结果写入html,将不同部分写入另一个txt #!/user/bin/python #!coding=utf-8 # -*- coding: utf-8 -*- ...

  3. linux 安装配置NFS服务器

    一.Ubuntu安装配置NFS 1.安装NFS服务器 sudo apt-get install nfs-kernel-server 安装nfs-kernel-server时,apt会自动安装nfs-c ...

  4. lms框架模块详解

    模块的定义 一般地,开发者如果想要在一个自定义的程序集(包)中注册相关的服务,或者在应用初始化或停止时执行一段自定义的代码,那么您可能需要将该程序集(包)定义为一个模块. lms框架存在两种类型的模块 ...

  5. 转载 | python inferface使用

    Python中最特别的关键字之一便是pass,它放在类或函数里,表示类和函数暂不定义. class PassClass: pass def PassFun(): pass 如上实现最精简的类和函数定义 ...

  6. CodeGen API分析

    CodeGen API分析 作为使用命令行界面的替代方法,开发人员可以使用核心CodeGen环境编写自定义工具或实用程序来生成代码,从而将CodeGen更紧密地集成到开发环境中. 为了实现这一点,Co ...

  7. 【Android漏洞复现】StrandHogg漏洞复现及原理分析_Android系统上的维京海盗

    文章作者MG1937 CNBLOG博客:ALDYS4 QQ:3496925334 0x00 StrandHogg漏洞详情 StrandHogg漏洞 CVE编号:暂无 [漏洞危害] 近日,Android ...

  8. WordPress安装篇(3):用宝塔面板在Linux上安装WordPress

    前面的文章已经介绍了如何在Windows环境安装WordPress,这篇文章来介绍在Linux环境怎样快速安装WordPress.大家都知道,Linux系统相对于Windows系统而言占用资源更少.更 ...

  9. 【VBA】字符串处理

    InStr 函数:查找字符串 1 Sub InStr函数() 2 Dim strTemp As String 3 strTemp = "=AAA=BBB=C" 4 Debug.Pr ...

  10. LuatOS | 全新在线模拟器,随时随地发挥创意

    LuatOS --运行在嵌入式硬件的实时操作系统,开启全新物联网生态. 聚焦嵌入式应用生态,内置功能可支持绝大多数物联网应用场景.深度整合Lua语言,只需少量内存和Flash空间就能运行.不局限于合宙 ...