集合: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. make: g77: Command not found 修改Makefile.in中的编译文件中的g77为gfortran

    make: g77: Command not found 编译cblas时报错,这时,修改Makefile.in中的编译文件中的g77为gfortran

  2. Linux创建RAID1_实战

    Linux创建RAID1实战 Linux创建RAID1 RAID1俗称镜像,它最少由两个硬盘组成,且两个硬盘上存储的数据均相同,以实现数据冗余 RAID1读操作速度有所提高,写操作理论上与单硬盘速度一 ...

  3. 戴尔 R730xd 服务器更改管理口密码 图文教程

    一.开机根据提示按F2进入配置界面 - 选择中间的iDRAC Setting选项,回车确认 二.进入之后选择 user configuration 选项 三.在change password 处键入新 ...

  4. Maven 阿里云镜像配置

    1. 为什么要配置 Maven 阿里云镜像 安装 Maven 后默认是从国外 Maven 中央仓库下载内容,而下载速度简直可以用龟速来形容,不仅慢而且还经常出错,简直让人抓狂. 这时国内大厂阿里巴巴, ...

  5. centos下安装visual studio code-(来自官网)

    (https://code.visualstudio.com/docs/setup/linux) Running VS Code on Linux Installation 安装完成后可执行:$cod ...

  6. 文件包含之包含了Linux文件描述符

    0x00 原理   文件描述符是内核为了高效管理已被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O操作的系统调用都通过文件描述符. 翻译成人话- 可以认为是指向文件的一个指针,如果有文件 ...

  7. Qt 设置窗体透明

    一.前言 在音频开发中,窗体多半为半透明.圆角窗体,如下为Qt 5.5 VS2013实现半透明方法总结. 二.半透明方法设置 1.窗体及子控件都设置为半透明 1)setWindowOpacity(0. ...

  8. MySQL 通过.frm文件和.ibd文件实现InnoDB引擎的数据恢复

    起因是这样的,公司的领导表示说服务器崩了,修理好之后,只剩下数据库目录下的物理文件(即.frm文件与.ibd文件).然后,整了一份压缩包给我,叫我瞅一下能不能把数据恢复出来.我当场愣了一下,这都啥文件 ...

  9. Elasticsearch常用DSL关键字

    Elasticsearch常用DSL关键字 query: 用于包含查询使用到的语法 match_all: 最简单的查询,获取索引所有数据,类似搜索 *.如:"query":{&qu ...

  10. python基础知识笔记(一)

    一.变量 可以是字母.数字(不能作为开头).下划线. 自定义的常量名一般全部大写. na = "liu" na2 = na print("my na is ", ...