Python——第二章:集合 Set
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】:以下类型的值,是不可变的数据类型:int、str、tuple、bool,可以作为集合内的元素
s = {1,"呵呵哒",2,3}
print(type(s))
print(s)
#输出结果
<class 'set'>
{2, 1, '呵呵哒', 3}
不可哈希【unhashable】:以下类型的值,是可变的数据类型:list、dict、set,不可以作为集合内的元素
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的更多相关文章
- 简学Python第二章__巧学数据结构文件操作
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- Python 第二章-列表和元组
第二章-列表和元组 2.0 在Python中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序列号-即元素的位置, 也称为索引.第一个索引是0,第二个是1,以此类推. ...
- python第二章:数据类型--小白博客
标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dictionary(字典) Python3 ...
- python第二章:控制流
变成实际上是一个过程的提现,每个过程都是有多个流程块组成. 比如:判断是否下雨的过程 1.布尔值 在第一章最后举例了比较操作后,最终返回的结果 True or False True 和 False是一 ...
- 【原创】Python第二章——字符串
字符串是一个字符序列,(提醒:序列是Python的一个重要的关键词),其中存放UNICODE字符.Python中的字符串是不可变的(immutable),即对字符串执行操作时,总是产生一个新的字符串而 ...
- 【原创】Python第二章——行与缩进
Python的基本组成——逻辑行和缩进 a="我是一个物理行" a="""我是一个逻辑行 因为我一条语句便跨越了2个物理行""&q ...
- 【原创】Python第二章——标识符命名规则
在Python中,一切都是对象,包括常量数据类型,如整数数据类型(1,2,3...),字符串数据类型("ABC").想要使用这些对象,就要使用它的对象引用.赋值操作符,实际上是使得 ...
- python 第二章 对象与类型
可变对象和不可变对象 1,可变对象,list(列表),dict(字典),集合(set),字节数组. 2,不可变对象,数值类型,字符串,字节串,元组(具体形式 ()). 注意条件:可变和不可变指的是该对 ...
- Python第二章-变量和数据类型
变量和数据类型 一.什么是变量,常量 思考:程序执行指的是什么? 对数据进行存储处理和计算,最终获得结果,这是程序执行的本质. 变量的概念和在数学中的变量的概念一样的,只是在计算机程序中,变量不仅可以 ...
- machine learn in python 第二章2.1.1
1大约 sklearn.datasets from sklearn.datasets import load_iris import numpy as np data = load_iris() da ...
随机推荐
- assembleDebug太慢的问题调查以及其他
Preface 最近在做flutter上的音频和视频方面的探索. 需要用到一些视屏区域截取,视屏导出成序列图等等. 这是昨天晚上到今天早上解决的一些问题的汇总,可能先后顺序之类的会记错: 此文目的用于 ...
- 2023-10-04:用go语言,现有一棵无向、无根的树,树中有 n 个节点,按从 0 到 n - 1 编号 给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges , 其中 edge
2023-10-04:用go语言,现有一棵无向.无根的树,树中有 n 个节点,按从 0 到 n - 1 编号 给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges , 其中 edge ...
- c语言代码练习13
//打印九九乘法表#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int x = 0; int y = ...
- Oracle的差异增量备份和累积增量备份
在rman增量备份中,有差异增量和累积增量的概念. 差异增量:是备份上级及同级备份以来所有变化的数据块,差异增量是默认增量备份方式累积增量:是备份上级备份以来所有变化的块 累积增量是备份上级备份以来所 ...
- Script:10g中显示Active Session Count by Wait Class
摘自: http://www.askmaclean.com/archives/script-10g-show-active-session-count-wait-class.html SELECT T ...
- Dubbo 路由及负载均衡性能优化
作者:vivo 互联网中间件团队- Wang Xiaochuang 本文主要介绍在vivo内部针对Dubbo路由模块及负载均衡的一些优化手段,主要是异步化+缓存,可减少在RPC调用过程中路由及负载均衡 ...
- 游戏客户端开发中对MVC模式的思考
话说在前头,我分析MVC模式是为了确定自己要做的独立游戏的结构出来,并不适用于大型商业游戏的开发. MVC模式的概述 关于MVC模式,Model用于存储数据,View层用于显示数据,Controlle ...
- 舞会(lgP1352)
写了一个多小时,本来觉得 bfs 能过然后码了好久发现不会确定顺序,又重新写了一遍 dfs /kk 好吧其实是因为我记得上次做这题的时候写的是 bfs 设 \(f[i][0]\) 表示以 \(i\) ...
- kubeadm 添加master及node
1.添加master 新master服务器初始化 添加k8s源 $ cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] ...
- k8s Redis安装部署
一.文档简介 作者:lanjiaxuan 邮箱:lanheader@163.com 博客地址:https://www.cnblogs.com/lanheader/ 更新时间:2021-07-09 安装 ...