当前位置: 首页 > news >正文

python-(4-3)数据类型的应用(元组、集合)

文章目录

  • 一.元组
  • 二.集合
    • 1.特点
      • 1:与列表相似,set集合是无序的
      • 2:python中set集合存储的数据类型必须可以哈希计算
      • 3:set集合可以去重复
    • 2.操作
      • 1.创建空集合、空元组、空列表、空字符串
      • 2.添加元素
      • 3.删除元素
      • 4.修改元素
      • 5.查询元素
    • 3.交集、并集、差集

一.元组

特点:是不可变的列表。
拥有列表的索引、切片等功能,但元素不能被替换修改。

在这里插入图片描述

当元组中只有一个元素时,它就是字符串

在这里插入图片描述

这是因为此处的小括号默认表示优先级,就像print((2+3)*5)中的计算中,要先计算小括号内的加法,再计算乘法。所以小括号就默认了该元素的字符串类型优先级更高。

如果想要表示该元素类型是元组,只需要加一个逗号即可
在这里插入图片描述
此外,元组不可变,指为其元素分配的内存地址不可变,举例说明。
元组中的一个元素是列表,给列表添加一个元素,是可行的。

t = (10, "张三", ["k12", "cat"])
t[2].append("abc")
print(t)

给该列表分配的内存地址是固定不改变的,列表内部的增删改查是可以操作的。
一般不会这么玩,了解即可。

二.集合

1.特点

1:与列表相似,set集合是无序的

在这里插入图片描述
通过上图示例不难发现,如果大括号内为空,这不是集合,而是字典的数据类型。
并且打印不同类型的元素时,集合也是无序排列的。

2:python中set集合存储的数据类型必须可以哈希计算

在python的set集合中存储数据时,会对数据进行哈希计算,根据计算出来的哈希值进行存储数据,否则会报错,如下图所示。
在这里插入图片描述
可哈希:不可变的数据类型:int(整数)、str(字符串)、tuple(元组)、bool(布尔)
不可哈希:可变的数据类型:list(列表)、dict(字典)、set(集合)

3:set集合可以去重复

set集合中相同的元素不会出现两次及以上,所以可以用来给列表去重。
在这里插入图片描述
去除重复之后的数据是无序的。
由图可以看出,去重后打印的列表数据顺序有所变化。

2.操作

1.创建空集合、空元组、空列表、空字符串

s = set()
t = tuple()
l = list()
s = str()

2.添加元素

s.add("懒羊羊")
s.add("xyz")

3.删除元素

s.remove("xyz")

4.修改元素

修改元素=先删除元素+再添加元素

s.remove("懒羊羊")  # 先删除
s.add("灰太狼")     # 再新增

5.查询元素

通过for循环来查找元素,因为它是无序的,所以不能走索引
在这里插入图片描述

3.交集、并集、差集

首先创建两个集合,模拟测试环境

s1 = {"孙悟空", "猪八戒", "唐僧"}
s2 = {"比鲁斯", "克林", "孙悟空"}

表示交集:

print(s1 & s2)

表示并集:

print(s1 | s2)
或者
print(s1.union(s2))

表示差集:

print(s1 - s2)
print(s1.difference(s2))

print(s2 - s1)
print(s2.difference(s1))

相关文章:

  • Hbase基本概念
  • cmake是什么,为什么现在都用cmake,cmake编译原理和跨平台示例
  • IDEA中使用JIRA
  • 物联网-物联前端安全加密技术简介
  • 怎样在LaTeX中方便输入带圆圈的数字
  • 如何在 SAP ABAP ALV 报表里以交通灯的方式显示某一列的值
  • 【C++实现】浅聊定时器的实现,最小堆配合map实现定时器
  • Spring五大类注解读取存储Bean对象
  • 数据备份管理中的分类定级:方法、标准与策略
  • 一次日常需求处理带给我的思考
  • 2022年PMP考试换大纲了,但是PMBOK还没更新,该如何准备?
  • 专业五月考自测
  • js之求最值的三种方法——Math.min()和 Math.max()、最小值array.sort()[0]、Math.min(...[v1, v2...])
  • springboot毕设项目易捷接待系统761z7(java+VUE+Mybatis+Maven+Mysql)
  • jar包,引入依赖
  • [PHP内核探索]PHP中的哈希表
  • 【译】JS基础算法脚本:字符串结尾
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • angular2开源库收集
  • Angular6错误 Service: No provider for Renderer2
  • canvas绘制圆角头像
  • ES6系列(二)变量的解构赋值
  • HTTP 简介
  • Java 23种设计模式 之单例模式 7种实现方式
  • leetcode386. Lexicographical Numbers
  • 从零开始的无人驾驶 1
  • 高度不固定时垂直居中
  • 诡异!React stopPropagation失灵
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 数据可视化之 Sankey 桑基图的实现
  • 学习Vue.js的五个小例子
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 数据库巡检项
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #DBA杂记1
  • (2)Java 简介
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (五)网络优化与超参数选择--九五小庞
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)平衡树
  • .java 9 找不到符号_java找不到符号
  • .Mobi域名介绍
  • .net core 控制台应用程序读取配置文件app.config
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .Net 应用中使用dot trace进行性能诊断
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)