Python - 基础数据类型 set 集合
集合的简介
- 集合是一个无序、不重复的序列
- 它的基本用法包括成员检测和消除重复元素
- 集合对象也支持像 联合,交集,差集,对称差分等数学运算
- 集合中所有的元素放在 {} 中间,并用逗号分开
集合的栗子
这里会有个重点知识
- # 声明
- basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
- print(basket)
- set_ = {1, 1, 1, 1, 2}
- print(set_)
- # 输出结果
- {'orange', 'pear', 'banana', 'apple'}
- {1, 2}
自动去重了,每个元素只保留一个,且是无序的
再来看一个栗子
- set_ = {{1, }, {1, }}
- print(set_)
- set_ = {[1, ], [2, ]}
- print(set_)
- # 输出结果
- set_ = {{1, }, {1, }}
- TypeError: unhashable type: 'set'
- set_ = {[1, ], [2, ]}
- TypeError: unhashable type: 'list'
为什么报错?
重点:因为 set 集合只能包含不可变对象元素,而列表、集合本身都是可变对象,所以会报错
集合和列表的区别
- 列表中的元素允许重复,集合中的元素不允许重复
- 列表是有序的,提供了索引操作,集合是无序的,没有索引操作
- set_ = {1, 1, 1, 1, 2}
- set[1]
- # 输出结果
- set[1]
- TypeError: 'type' object is not subscriptable
提示该类型不能下标
特殊集合
如何创建一个空集合
- set_ = {}
- print(set_, type(set_))
- # 输出结果
- {} <class 'dict'>
不可以直接 { },这样默认是一个空字典哦
正确写法
- set_ = set()
- print(set_, type(set_))
- # 输出结果
- set() <class 'set'>
常见运算操作
运算符 |
合并多个集合
- >>> {1, 2} | {3, 4}
- {1, 2, 3, 4}
- >>> {1, 2} | {3, 4} | {5, 6}
- {1, 2, 3, 4, 5, 6}
运算符 -
从集合中删除元素
- >>> {1, 2, 3, 4} - {3, 4, 5, 6}
- {1, 2}
运算符 &
取交集,返回两个集合都包含的元素
- >>> {1, 2, 3} & {3, 4, 5}
- {3}
运算符 ^
取差集
- >>> {1, 2, 3} ^ {3, 4, 5}
- {1, 2, 4, 5}
关键字 in
检查集合中是否包含指定元素
- >>> 'polo' in {'www', 'polo', 'com'}
- True
- >>> 'yy' in {'www', 'yyy', 'com'}
- False
常见函数
len(set)
获取集合的长度
- >>> len({1, 2, 3})
- 3
- >>> len({1, 2, 3, 4})
- 4
max(set)
获取集合中最大的元素
- >>> max({1, 2})
- 2
- >>> max({1, 3, 2})
- 3
min(set)
获取集合中最小的元素
- >>> min({1, 2})
- 1
- >>> min({1, 3, 2})
- 1
集合常见方法
add(item)
向集合中新增一个元素 item
- # add
- set_ = {1, 2, 3}
- set_.add(1)
- set_.add(4)
- set_.add("5")
- print(set_)
- # 输出结果
- {1, 2, 3, 4, '5'}
remove(item)
从集合中删除指定元素 item
- # remove
- set_ = {1, 2, 3}
- set_.remove(2)
- print(set_)
- # 输出结果
- {1, 3}
clear()
移除集合中的所有元素
- # remove
- set_ = {1, 2, 3}
- print(set_)
- set_.clear()
- print(set_)
- # 输出结果
- {1, 2, 3}
- set()
pop()
移除集合首位元素,并返回该元素值
- # pop
- a = {1, 2, 3, 4}
- print(a.pop())
- print(a.pop())
- print(a)
- # 输出结果
- 1
- 2
- {3, 4}
difference()
从源集合中找出目标集合中没有的元素集合
- # difference
- a = {1, 2, 3, 4}
- b = {2, 3, 5}
- print(a.difference(b))
- # 输出结果
- {1, 4}
union()
返回两个集合的并集
- # union
- set1 = {1, 2, 3}
- set2 = {3, 4, 5}
- print(set1.union(set2))
- # 输出结果
- {1, 2, 3, 4, 5}
intersection()
返回两个集合的交集
- # intersection
- set1 = {1, 2, 3}
- set2 = {3, 4, 5}
- print(set1.intersection(set2))
- # 输出结果
- {3}
issubset()
判断指定集合是否为子集
- # issubset
- set1 = {1, 2}
- set2 = {1, 2, 3}
- print(set1.issubset(set2))
- # 输出结果
- True
issuperset()
判断指定集合是否为超集
- # issuperset
- set1 = {1, 2, 3}
- set2 = {1, 2}
- print(set1.issuperset(set2))
- # 输出结果
- True
集合总结
因为集合是不可重复的,所以可以利用它来处理一些需要避免重复插入的场景,比如为了避免某一学生的信息重复录入
Python - 基础数据类型 set 集合的更多相关文章
- Python基础数据类型之集合
Python基础数据类型之集合 集合(set)是Python基本数据类型之一,它具有天生的去重能力,即集合中的元素不能重复.集合也是无序的,且集合中的元素必须是不可变类型. 一.如何创建一个集合 #1 ...
- Python基础数据类型之集合以及其他和深浅copy
一.基础数据类型汇总补充 list 在循环一个列表时,最好不要删除列表中的元素,这样会使索引发生改变,从而报错(可以从后向前循环删除,这样不会改变未删元素的索引). 错误示范: lis = [,,, ...
- Python基础数据类型-列表(list)和元组(tuple)和集合(set)
Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...
- python基础数据类型--集合(set)
python基础数据类型--集合(set) 集合是一个数学概念由一个或多个确定的元素所构成的整体叫做集合 集合中的三个特征 1.确定性(元素必须死可hash) 2.互异性(去重) 3.无序性(集合中的 ...
- 『Python基础-11』集合 (set)
# 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...
- Python 入门之Python基础数据类型及其方法
Python 入门之Python基础数据类型 1. 整型:int 用于计算,用于比较 (在赋值的时候先执行等号右边的内容) 1.1 整数的加 a = 10 b = 20 print(a + b) 结果 ...
- Python基础篇(set集合)
Python基础篇(set集合,深浅拷贝) set集合是Python的一个基本类型,一般是不常用.set中的元素是不重复的.无序的里边 的元素必须是可hash的比如int,str,tuple,bool ...
- 图解python | 基础数据类型
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...
- python基本数据类型之集合
python基本数据类型之集合 集合是一种容器,用来存放不同元素. 集合有3大特点: 集合的元素必须是不可变类型(字符串.数字.元组): 集合中的元素不能重复: 集合是无序的. 在集合中直接存入lis ...
随机推荐
- 【NX二次开发】布尔操作
//布尔操作 //UF_MODL_operations 对两个体执行布尔操作 //UF_MODL_unite_bodies 相加布尔操作,不可保留目标体.工具体 //UF_MODL_unite_bod ...
- noip模拟8[星际旅行·砍树·超级树·求和]
也不能算考得好,虽然这次A了一道题,但主要是那道题太简单了,没啥成就感,而且有好多人都A掉了 除了那一道,其他的加起来一共拿了25pts,这我能咋办,无奈的去改题 整场考试的状态并不是很好啊,不知道是 ...
- 【模拟7.22】visit(卢卡斯定理&&中国剩余定理)
如此显然的组合数我把它当DP做,我真是.... 因为起点终点已经确定,我们发现如果我们确定了一个方向的步数其他方向也就确定了 组合数做法1: 设向右走了a步,然后向左走了b=a-n步,设向上为c,向下 ...
- 『心善渊』Selenium3.0基础 — 2、Selenium测试框架环境搭建(Windows)
目录 1.浏览器安装 2.浏览器驱动下载 (1)ChromeDriver for Chrome (2)Geckodriver for Firefox (3)IEDriverServer for IE ...
- golang 写文件--详细解释
1,不覆盖指定的文件 先看代码怎么写,下面再具体解释. func writeToFile(msg string) { f, err := os.OpenFile("/home/mingbai ...
- 自定义Nuget包的技巧一二
背景: 在项目中, 通常会拆分成核心库(Core)和应用(App)两个部分.核心库由专人维护, 不同的App是不同的团队,但都引用了核心库.当核心库需要升级更新时,有的应用会更新,有的不会--可能是没 ...
- react中 props,state,render函数的关系
1.当组件的 state 或者 props 发生改变的时候,自己的render函数就会重新执行. 2. 当父组件的render函数执行时,其所有子组件的render函数都会重新执行.
- kubelet之volume manager源码分析
kubernetes ceph-csi分析目录导航 基于tag v1.17.4 https://github.com/kubernetes/kubernetes/releases/tag/v1.17. ...
- 面试官:spring中定义bean的方法有哪些?我一口气说出了12种,把面试官整懵了。
前言 在庞大的java体系中,spring有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜.我们都知道spring是创建和管理bean的工厂,它提供了多种定义bean的方式,能够满足我们日常工 ...
- 【luogu P3807】【模板】卢卡斯定理/Lucas 定理(含 Lucas 定理证明)
[模板]卢卡斯定理/Lucas 定理 题目链接:luogu P3807 题目大意 求 C(n,n+m)%p 的值. p 保证是质数. 思路 Lucas 定理内容 对于非负整数 \(n\),\(m\), ...