集合是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
    • 其他运算符
  • 固定集合的方法
    • 取出修改集合的方法,其余便是固定集合的方法

由于固定集合在实际开发中,用到的不是很多,所以没有展开详细教程。

随机推荐

  1. LOJ #2877. 「JOISC 2014 Day2」交朋友 并查集+BFS

    这种图论问题都挺考验小思维的. 首先,我们把从 $x$ 连出去两条边的都合并了. 然后再去合并从 $x$ 连出去一条原有边与一条新边的情况. 第一种情况直接枚举就行,第二种情况来一个多源 bfs 即可 ...

  2. python——异常(1),捕获特定异常

    """1.捕获指定异常,异常类型有多种2.若尝试执行的代码异常类型与捕获的异常类型不同则报错3.try下方一般只放一行代码,若有多行可能异常代码,则捕获一个异常类型后函数 ...

  3. python学习---文件修改

    1.读一行,写一行,判断字符串,修改之. f=open("yesterday2","r",encoding="utf-8") f_new=o ...

  4. SSH自动断开后重连的解决方案

    注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 本文源链接:https://www.cnblogs.com/chloneda/p/ssh-conn ...

  5. 已发布的WEB项目,如何挂在服务器或者本机的IIS下

    第一步:打开IIS,在打开的IIS中,右击 “Default Web Site”,在弹出对话框中选择“新增应用程式”,参照如下图,设置相应参数. 第二步:在已经发布的项目文件系统添加在站点下后,点击项 ...

  6. C#MVC实现为雇员配置角色(完整详细+数据库)

    数据库创建“用户表”“角色表”“用户角色关系表” create table roles ( RId int identity, RName varchar(), Remark varchar() ) ...

  7. 关于Synchronized研伸扩展

    代码1 synchronized方法 synchronized void method(){ .......... } 代码2 synchronized代码块 synchronized (obj){ ...

  8. CSS 如何实现当鼠标放在上面时整行变色呢?

    摘要:下文讲述css中实现鼠标放在指定行上面时,整行变色的方法分享,如下所示: 实现思路:使用:hover伪类,实现当鼠标指向时,其背景色发生相应的变化,如下例所示: 例: 下文中的div,当鼠标放上 ...

  9. 吴裕雄--天生自然 HADOOP大数据分布式处理:安装XShell

    下载安装包

  10. java网页程序采用 spring 防止 csrf 攻击 转

    银行项目开发过程中,基本都会采用 spring 框架,所以完全可以不用自己开发 filter 去拦截 csrf 攻击的请求,而直接采用实现 spring 提供的 HandlerInterceptor ...