set集合,集合的特点是无序的

写法:s = {1,2,3}

但是如果内容是空的,它不是set集合,而是dict字典

s = {}
print(type(s)) #输出结果
<class 'dict'>
{}

集合是无序的,每次输出结果都不尽相同

s = {3,2,1}
print(type(s))
print(s) #输出结果
<class 'set'>
{1, 2, 3}

集合是不能重复的,即使你这样做或者add,也是没有实际意义的

s = {3,2,3}
print(type(s))
print(s) #输出结果
<class 'set'>
{2, 3}

python中的set集合进行数据存储的时候,需要对数据进行哈希计算。根据计算出来的哈希值进行存储数据。

set集合要求存储的数据必须是可以进行哈希计算的。

可哈希【hash】:以下类型的值,是不可变的数据类型:intstrtuplebool,可以作为集合内的元素

s = {1,"呵呵哒",2,3}
print(type(s))
print(s) #输出结果
<class 'set'>
{2, 1, '呵呵哒', 3}

不可哈希【unhashable】:以下类型的值,是可变的数据类型:listdictset,不可以作为集合内的元素

s = {1, 2, 3, "呵呵", (1, 2, 3), []}  # TypeError:unhashable type: 'list'
print(s)

正确的创建空集合的方法:

s = set()  # 创建空集合
t = tuple()# 创建空元组
l = list() # 创建空列表
s = str() # 创建空字符串

举例:

s = set()  # 创建空集合

s.add("赵本山")
s.add("范伟")
s.add("麻花藤")
print(s) #输出结果,乱序
{'麻花藤', '范伟', '赵本山'} s.remove("范伟")
print(s) s.pop() # 删除最后一个
print(s)
#由于集合无序,输出也是乱序的,测试的时候每次结果都不一样,也无法验证是删除了最后一个。

想要修改集合内的元素,可以先删除,再新增。

s.remove("麻花藤")
s.add("沈腾")
print(s) #输出结果
{'赵本山', '沈腾', '范伟'}

想要查询,只能通过for循环来依次查询每一个元素

for item in s:
print(item) #输出结果
赵本山
沈腾
范伟

交集, 并集, 差集

s1 = {"刘能", "赵四", "皮长山"}
s2 = {"刘科长", "冯乡长", "皮长山"} print(s1 & s2) # 交集
print(s1.intersection(s2))
#输出结果
{'皮长山'} print(s1 | s2) # 并集
print(s1.union(s2))
#输出结果
{'皮长山', '刘能', '赵四', '冯乡长', '刘科长'} print(s1 - s2) # 差集(S1里有S2里没有的)
print(s1.difference(s2))
#输出结果
{'刘能', '赵四'}

集合是不能重复的

#重要的作用: 可以去除重复
s1 = {"周杰伦", "昆凌", "蔡依林", "侯佩岑"}
print(s1)
s1.add("周杰伦")
print(s1) #输出结果
{'昆凌', '蔡依林', '周杰伦', '侯佩岑'}

我们利用这种特性,可以对列表里的元素进行去重。

lst = ["周杰伦", "昆凌", "蔡依林", "侯佩岑", "周杰伦", "昆凌", "蔡依林", "侯佩岑", "周杰伦", "昆凌", "蔡依林", "侯佩岑"]
print(lst)
print(list(set(lst))) # 去除重复之后的数据是无序的.

操作的方式是先进行set变成集合,再进行list操作,变成列表。但是这里的顺序是无序的,不唯一。

输出结果:

['周杰伦', '昆凌', '蔡依林', '侯佩岑', '周杰伦', '昆凌', '蔡依林', '侯佩岑', '周杰伦', '昆凌', '蔡依林', '侯佩岑']
['昆凌', '蔡依林', '周杰伦', '侯佩岑']

Python——第二章:集合 Set的更多相关文章

  1. 简学Python第二章__巧学数据结构文件操作

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  2. Python 第二章-列表和元组

    第二章-列表和元组 2.0      在Python中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序列号-即元素的位置, 也称为索引.第一个索引是0,第二个是1,以此类推. ...

  3. python第二章:数据类型--小白博客

    标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dictionary(字典) Python3 ...

  4. python第二章:控制流

    变成实际上是一个过程的提现,每个过程都是有多个流程块组成. 比如:判断是否下雨的过程 1.布尔值 在第一章最后举例了比较操作后,最终返回的结果 True or False True 和 False是一 ...

  5. 【原创】Python第二章——字符串

    字符串是一个字符序列,(提醒:序列是Python的一个重要的关键词),其中存放UNICODE字符.Python中的字符串是不可变的(immutable),即对字符串执行操作时,总是产生一个新的字符串而 ...

  6. 【原创】Python第二章——行与缩进

    Python的基本组成——逻辑行和缩进 a="我是一个物理行" a="""我是一个逻辑行 因为我一条语句便跨越了2个物理行""&q ...

  7. 【原创】Python第二章——标识符命名规则

    在Python中,一切都是对象,包括常量数据类型,如整数数据类型(1,2,3...),字符串数据类型("ABC").想要使用这些对象,就要使用它的对象引用.赋值操作符,实际上是使得 ...

  8. python 第二章 对象与类型

    可变对象和不可变对象 1,可变对象,list(列表),dict(字典),集合(set),字节数组. 2,不可变对象,数值类型,字符串,字节串,元组(具体形式 ()). 注意条件:可变和不可变指的是该对 ...

  9. Python第二章-变量和数据类型

    变量和数据类型 一.什么是变量,常量 思考:程序执行指的是什么? 对数据进行存储处理和计算,最终获得结果,这是程序执行的本质. 变量的概念和在数学中的变量的概念一样的,只是在计算机程序中,变量不仅可以 ...

  10. machine learn in python 第二章2.1.1

    1大约 sklearn.datasets from sklearn.datasets import load_iris import numpy as np data = load_iris() da ...

随机推荐

  1. [HUBUCTF 2022 新生赛]ezPython

    附件链接:https://wwvc.lanzouj.com/iIqq218z5x0d 给了一个pyc文件 利用命令将pyc转换为py文件 uncompyle6 ezPython.pyc > ez ...

  2. Python基于Flask的高校舆情分析,舆情监控可视化系统

    一.前言在当今社会,舆情监控越来越被重视.随着互联网技术的发展,我们从传统媒体渠道.官方报告.调查问卷等方式搜集到的舆情信息,逐渐被网络上的内容所替代.因为网络上的内容传播速度快.及时性强.覆盖范围广 ...

  3. MySQL中的Statistics等待

    [作者] 吴宙旭,携程数据库专家 [问题描述] 线上我们偶尔会碰到MySQL的状态是statistics. 但如果出现大量的statistics等待,会引起MySQL性能急剧下降.官方的文档对这个状态 ...

  4. 小米云原生文件存储平台化实践:支撑 AI 训练、大模型、容器平台多项业务

    小米作为全球知名的科技巨头公司,已经在数百款产品中广泛应用了 AI 技术,这些产品包括手机.电视.智能音箱.儿童手表和翻译机等.这些 AI 应用主要都是通过小米的深度学习训练平台完成的. 在训练平台的 ...

  5. 造轮子之集成GraphQL

    先简单对比以下GraphQL和WebAPI:GraphQL和Web API(如RESTful API)是用于构建和提供Web服务的不同技术. 数据获取方式: Web API:通常使用RESTful A ...

  6. 14.11 Socket 基于时间加密通信

    在之前的代码中我们并没有对套接字进行加密,在未加密状态下我们所有的通信内容都是明文传输的,这种方式在学习时可以使用但在真正的开发环境中必须要对数据包进行加密,此处笔者将演示一种基于时间的加密方法,该加 ...

  7. 【虹科干货】Redis 开发者需要了解的缓存驱逐策略

    在你搭建并配置了一个Redis数据库之后,Redis成功地提升了应用程序性能.然而这里有一个潜在问题,随着缓存数据的快速增加和内存占用率的逐渐上升,你很快会发现Redis缓存容量即将达到硬件存储容量上 ...

  8. meet

    以后就放弃csdn了,就来这里记录自己的成长,就当成一个树洞吧,开心与难过,学习与生活,进步与成长,留下时间的痕迹!冲!冲!冲!

  9. CF1707B [Difference Array]

    Problem 题目简述 设序列 \(a\) ,并且是单调递增的.设 \(a\) 当前长度为 \(l\),你要对 \(a\) 作差分,即令 \(b_i = a_{i+1} - a_i(1\le i & ...

  10. 在 windows 借助 git 修改文件权限

    起因: 创建新仓库的时候,仓库都没有脚本,然后就需要把运维同事的脚本复制过来,可执行脚本都是在 scripts 文件夹下面的 过了几天,来活了 刚开始还不知道咋回事,想到的文件权限是在linux系统下 ...