set的使用
集合是Python的一种数据类型,集合是一个可变容器。常用于列表的去重。
什么是集合
- 集合是一个可变容器
- 集合中的数据对象都是唯一的(不可重复)
- 集合是无序的存储结构
- 集合是可迭代对象
- 集合内的元素是不可变的
创建集合
- 使用
{}创建集合,集合元素使用,隔开
s = {1, 2}
注意:使用{}不可以创建空集合,因为创建出来的是一个字典。
- 使用构造函数创建集合
s = set()
集合的运算
- 交集- &
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1 & s2)
- 并集- |
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1 | s2)
- 补集- -
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1 - s2)
# 生成属于s1但不属于s2的所有元素
- 对称补集- ^
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1 - s2)
- 还有一些基本的运算,可以查看Python运算符进行学习
集合的内建函数
- len() 集合内元素的个数
- max() 最大值
- min() 最小值
- sum() 和
s = {11, 22, 44, 6, 0, 10}
print(len(s))
print(max(s))
print(min(s))
print(sum(s))
- any() 任何一个元素为真,返回真
s = {11, 0}
boolean = any(s)
print(boolean)
- all() 所有元素为真,返回真
s = {11, 22, 33, "string"}
boolean = all(s)
print(boolean)
集合的方法
- add() 添加元素,元素存在,则不执行
s = {11, 22, 33}
s.add(44)
print(s)
- clear() 清空集合所有的元素
s = {11, 22, 33}
s.clear()
print(s)
- remove() 移除指定的元素
s = {11, 22, 33, 44, 55}
s.remove(11)
print(s)
- pop() 随机删除一个元素
s = {11, 22, 33, 44, 55}
s.pop()
print(s)
- difference() 返回两个集合的补集
s1 = {11, 22, 33, 44}
s2 = {55, 66, 77, 22, 44, 88}
print(s1.difference(s2))
- difference_update() 移除两个集合中都存在的元素
s1 = {11, 22, 33, 44}
s2 = {55, 66, 77, 22, 44, 88}
s1.difference_update(s2)
print(s1)
print(s2)
- isdisjoint() 判断两个集合中是否有相同的元素,返回一个布尔值,没有返回True,否则就是False
s1 = {11, 22, 33, 44}
s2 = {55, 66, 77, 22, 44, 88}
boolean = s1.isdisjoint(s2)
print(boolean)
- 以上只介绍部分常用方法,等待你的补充
集合的遍历
s = {11, 22, 33, 44, 55}
for i in s:
print(i)
集合推导式
集合推导式允许使用可迭代对象生成集合的表达式
语法:
{表达式 for 变量 in 可迭代对象 if 条件}
l = [1, 2, 3, 4, 5, 6]
s = {x for x in l if x %2 == 0}
print(s)
集合的去重
list1 = [11, 22, 33, 11, 22, 11, 44, 11]
print(set(list1))
固定集合
- 不可变的容器,无序,元素唯一
创建固定集合- 使用构造函数(frozenset)
fs = frozenset()
fs_num = frozenset([1, 2, 3, 4])
- 固定集合的运算
- 交集,并集, 补集,对称补集
- in / not in
- 其他运算符
- 固定集合的方法
- 取出修改集合的方法,其余便是固定集合的方法
由于固定集合在实际开发中,用到的不是很多,所以没有展开详细教程。
随机推荐
- Linux系统开机显示BusyBox v1.22.1 built-in shell(ash) 解决方法
BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件.BusyBox 包含了一些简单的工具,例如ls.cat和echo等等,还包含了一些更大.更复杂的工具,例grep.find.mou ...
- Openshift部署流程介绍
背景 Openshift是一个开源容器云平台,是一个基于主流的容器技术Docker和Kubernetes构建的云平台.Openshift底层以Docker作为容器引擎驱动,以Kubernetes 作为 ...
- 刷题79. Word Search
一.题目说明 题目79. Word Search,给定一个由字符组成的矩阵,从矩阵中查找一个字符串是否存在.可以连续横.纵找.不能重复使用,难度是Medium. 二.我的解答 惭愧,我写了很久总是有问 ...
- centos安装gitlab及汉化
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务.今天,就记录一下centos部署gitlab及其汉化的操作方法. 1.下载安装 下载地址: ...
- Vim 全选命令
ggVG稍微解释一下上面的命令gg 让光标移到首行,在vim才有效,vi中无效V 是进入Visual(可视)模式G 光标移到最后一行选中内容以后就可以其他的操作了,比如:d 删除选中内容y ...
- C语言 杂货整理
C语言 杂货整理 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include ...
- 【笔记】机器学习 - 李宏毅 - 8 - Backpropagation
反向传播 反向传播主要用到是链式法则. 概念: 损失函数Loss Function是定义在单个训练样本上的,也就是一个样本的误差. 代价函数Cost Function是定义在整个训练集上的,也就是所有 ...
- gogs搭建git服务教程
使用gogs搭建自己的git服务!!! 一.GIT服务器搭建方式 上一节课我们讲过GIT是一个分布式版本管理系统,既然是分布那么必定会涉及远程通信,那么GIT是采用什么协议进行远程通信的呢? git支 ...
- Linux系统之网络相关的命令
Linux系统之网络相关的命令 网络概述 网络:通过通信介质和通信设备 将分布不同地点的两台或多台计算机,经过相应的程序实现通信switch 交换机router 路由器网络的功能:数据通信:利用网络传 ...
- Pyecharts-数据可视化模块
Pyecharts 介绍 数据可视化模块 Echarts是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可.而Python是一门富有表达力的语言,很适合用于数据处 ...