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
- 其他运算符
- 固定集合的方法
- 取出修改集合的方法,其余便是固定集合的方法
由于固定集合在实际开发中,用到的不是很多,所以没有展开详细教程。
随机推荐
- k8s强制删除pod
有时候pod一直在Terminating kubectl delete pod xxx --force --grace-period=
- centos7添加网卡
centos7添加桥接网卡 1.使用ip a 命令查看是否有新加的网卡 如上图新网卡为ens36,默认分配ip为192.168.3.14 2. 使用nmcli conn 命令查看新网卡的uuid 3. ...
- 小Z的袜子(hose) HYSBZ - 2038 莫队+分块
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll>pl ...
- 为实践javaweb项目,搭建了相应环境
为实践javaweb项目,搭建了相应环境,现总结一下. JDK与JRE的安装与配置 前提准备: 1.我们下载的JDK安装包里面既包含JDK又包含JRE: 2.要确认你的电脑里面没有JDK和JRE的残留 ...
- 第二章.学习halcon的准备工作
*图片读取 read_image (Test1, 'C:/Users/Administrator/Desktop/new/Test1.jpg') *文件夹读取 list_files ('C:/User ...
- 【MySql】数据库连接异常:Thelastpacketsentsuccessfullytotheserverwas0millisecondsago
参考链接:http://blog.sina.com.cn/s/blog_7540bf5f0102xjpk.html 最近新入职,用了新版的mysql8数据库,结果连接数据库时出现了问题,报了几个异常, ...
- Python 3.8 已发布,现在是切换至新版本的好时机吗?
Python 3.8 已于前两周正式发布,不过目前大多数开发者主要使用的仍是 Python 3.7.x 或更旧的版本. ! 事实上,立刻切换到使用 Python 3.8 可能会引发一些问题.想知道何时 ...
- 42.通过原生SQL语句进行操纵mysql数据库
views.py文件中: from django.shortcuts import render # 导入connection模块 from django.db import connection d ...
- Windows电脑常用快捷键
Windows 徽标键键盘快捷方式: Windows 徽标键 打开或关闭“开始”屏幕 Windows 徽标键 + A 打开操作中心 Windows 徽标键 + B ...
- tp5使用PHPexcel扩展导出excel表
1,使用composer安装phpexcel包: composer require phpoffice/phpexcel 2,在控制器中创建方法: (1)使用PHPexcel扩展.代码如下 /** * ...