2024-4.python4基本数据类型

基本数据类型

引言
  • 提问

    • 前面我们说过,计算机的本质作用就是用来存储和运算二进制的数据。但是在实际应用中,我们看到计算机存储或者运算的数据并非只有二进制的数据,例如使用Excel可以对一些数值数据、文本数据或者图像数据进行不同形式的处理。也就是说计算机可以处理运算的数据有很多不同的种类或者类型。那这不就违背计算机的本质作用了吗?
    • 在后面讲解了计算机编码后,我们自然就会理解了,后面在聊。
    • 至少,现在我们应该可以感受到,计算机在实际应用中看起来是可以存储和处理不同类型的数据,要是想要使用Python指挥计算机处理不同的数据,则Python需要定义或者规范下不同数据的类型,那么Python中给我们规范了哪些类型的数据呢?
  • Python数据类型

    • 在Python的世界,数据类型分两种,内置的和自定义的
  • 内置数据类型

    • 内置的包括数字、字符串、布尔、列表、元组、字典、Bytes、集合这些常用的。
  • 自定义数据类型

    • 自定义的,一般以类的形式,根据需要组合以上内置类型成为独特的数据类型。
  • 疑问:大家有没有想过为什么编程语言要设置不同的数据类型吗?

    • 原因1:
      • 更好的分配管理内存,节省不必要的开支。如果没有数据类型的区别,那么所有的数据都必须按体积最大的数据所必须大小的房子分配空间,这样的浪费太严重了。有了数据类型,计算机就可以根据类型预定义的空间需求分配大小,合理开支。内存节省精简了,还能提高读取速度和运行效率。
    • 原因2:
      • 方便统一管理。这样,我们可以为同一数据类型,提供同样的操作,限制其它不允许的行为。也易于查找错误,定位问题。
    • 原因3:
      • 区分数据类型,更贴切人类对自然事物的分类管理习惯。我们人类对事物都进行了各种分类,植物是植物、动物是动物,书是书,笔是笔。分类了之后,我们很自然的知道书可以读,笔可以写。数据类型也一样,让我们对抽象的数据有了可分辨的行为和自然的记忆。
数字类型
  • 数字类型用于存储和表示数学意义上的数值。

  • Python 支持三种不同的数字类型,整数、浮点数和复数

  • 不可变类型

    • 数字类型是不可变类型。所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是一个全新的对象。数字1和2分别代表两个不同的对象,对变量重新赋值一个数字类型,会新建一个数字对象。

    • 例如:

      • a = 1 #创建数字对象1
      • a = 2 #创建数字对象2,并将2赋值给变量a,a不再指向数字对象1
      • 这里,发生了变化的是变量a的指向,而不是数字对象1变成了数字对象2。初学者可能会比较迷糊,但不要紧,可以先试着接受。
    • 实验:使用id工具显示1,2,3的内存空间地址

    • a = 1
      print(id(a))
      a = 2
      print(id(a))
      
  • 整数Int

    • 通常被称为整型,是正或负整数,不带小数点。例如:1,100,-8080,0,等等。
    • 不同进制的整数
      • 表示数字的时候,有时我们还会用八进制或十六进制来表示:
        • 十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2。
        • 八进制用0o前缀和0-7表示,例如0o12
  • 浮点数

    • 浮点数也就是小数,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,一般用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

    • salary = 1.2e5
      
  • 数字类型转换

    • 有时候,我们需要对数字的类型进行转换。Python为我们提供了方便的内置的数据类型转换函数。
    • int(x):
      • 将x转换为一个整数。如果x是个浮点数,则截取小数部分。

      • a = 10.5
        b = int(a)
        print(b)
        
    • float(x) :
      • 将x转换到一个浮点数。

      • a = 10
        b = float(a)
        print(b)
        
  • 数学计算

    • 对于数学计算,除了前面提到过的简单的加减乘除等等,更多的科学计算需要导入math这个库,它包含了绝大多数我们可能需要的科学计算函数,如下表

      • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
      • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
    • 以及两个数学常量:

      • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
布尔类型
  • 真于假、0和1,都是传统意义上的布尔类型。

  • 但在Python语言中,布尔类型只有两个值,True与False。请注意,是英文单词的对与错,并且首字母要大写,不能其它花式变型。

  • 所有计算结果返回的结果是True或者False的过程都可以称为布尔运算,例如比较运算。

  • a = 1 < 2
    print(a)
    
  • False等同于0,True等同于1

  • a = True + True + False + True
    print(a)
    
字符串类型
  • 字符串是由零个或多个字符组成的有限序列。字符串的内容可以包含字母、标点、特殊符号、中文、日文等全世界的所有字符。

  • 在python中字符串是通过单引号''或者双引号""标识的。

  • name = "bobo"
    addr = 'BeiJing'
    
  • 字符串特性

    • 字符串是不可变的序列数据类型,不能直接修改字符串本身,和数字类型一样!Python3全面支持Unicode编码,所有的字符串都是Unicode字符串,所以传统Python2存在的编码问题不再困扰我们,可以放心大胆的使用中文。

    • 字符串属于序列类型,所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。

    • s = "hello yuan" 
      
    • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 序列类型支持的操作:

  • #1.索引取值
    s = 'hello yuan'
    print(s[3])#2.切片取值:批量取出多个字符数据。s[start:end],只能取到start到end的前一位区间的字符数据
    s = 'hello yuan'
    print(s[0:5]) #hello
    print(s[0:-1]) #hello yua
    print(s[:-1]) #hello yua
    print(s[0:]) #hello yuan
    #3.in运算符检查某一个元素是否存在于一个序列
    s = 'hello yuan'
    print('h' in s)
    #4.支持加法运算:将两个字符串拼接到了一起
    s1 = 'hello '
    s2 = 'bobo'
    s3 = s1 + s2 #字符串的拼接
    print(s3)
    #5.*运算:将字符串叠放多次
    s1 = 'hello '
    s2 = s1 * 5  #字符串重叠拼接
    print(s2)
    
  • 字符串运算

    • 下表实例变量a值为字符串 “Hello”,b变量值为 “Python”:
    • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • python转义字符

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 多行字符串

    • 在字符串中,可以使用三引号(三单或三双引号都可以)编写跨行字符串,在其中可以包含换行符、制表符以及其他特殊字符。

    • s = '''djsfjdsfhdjskhfjkdsfdhjskdfh
      '''
      print(s)
      
  • 字符串内置方法

    • 内置方法有很多,但是我们主要记住如下几个即可:
    • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • s = 'hello bobo'
    s1 = 'bobo123'
    #find的返回值:#-1:子串没有存在当前字符串中#非-1值:子串存在当前字符串中
    result = s.find(s1)
    print(result)
    
  • s = 'hello bobo'
    #可以返回指定字符在当前字符串中的下标
    result = s.index('e')
    print(result)
    
  • s = 'hello bobo'
    #将当前字符串中的bobo替换成jay
    result = s.replace('bobo','jay')
    print(result)
  • s = 'hello bobo'
    print(len(s))
    
  • s = 'hello-bobo-and-jay'
    #split可以根据指定字符切分当前字符串
    print(s.split('-'))
    
  • s = 'www.123@qq.com'
    #split可以根据指定字符切分当前字符串
    print(s.startswith('www'))
    
  • 字符编码

    • 计算机只能处理数字01,如果要处理文本,就必须先把文本转换为数字01二进制的形式,这种转换方式就称为字符编码。

    • 对于我们而言,你只需要简单记住下面几种编码就好:

      • ASCII编码:早期专门为英语语系编码,只有255个字符,每个字符需要8位也就是1个字节。不兼容汉字。
      • Unicode编码:又称万国码,国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。用2个字节来表示汉字。
      • UTF-8编码:为了节省字节数,在Unicode的基础上进行优化的编码。天生兼容ASCII编码,所以最为流行。
      • GB2312:我国早期自己制定的中文编码,世界范围内不通用。
      • GBK: 全称《汉字内码扩展规范》,向下与GB2312兼容,向上支持ISO10646.1国际标准,是前者向后者过渡过程中的一个承上启下的产物。windows中文版的汉字编码用的就是GBK。也非世界范围通用的编码
      • 其它编码:非以上类型者的统称。属于能不用就不要碰的编码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从iPhone恢复已删除照片的最佳软件

本文分享了从iPhone恢复已删除照片的最佳软件。如果您正在寻找如何从iPhone恢复已删除的照片&#xff0c;请查看这篇文章。 为什么您需要软件从iPhone恢复已删除的照片&#xff1f; 没有什么比丢失iPhone上的重要数据更痛苦的了&#xff0c;尤其是一些具有珍贵回忆的照片。有时…

公司文件加密软件有监视功能吗?

公司文件加密软件不仅提供了强大的文件加密能力&#xff0c;还具备了监视功能&#xff0c;确保文件在使用过程中的安全性。华企盾DSC数据防泄密系统中的监控功能体现在以下几个方面&#xff1a; 加密文件操作日志&#xff1a;记录所有加密文件的申请、审批、扫描加解密、自动备…

C#值传递和引用传递,ref和out关键字,装箱和拆箱

C#值传递和引用传递 1.值传递和引用传递 值传递&#xff1a;值传递时&#xff0c;系统首先为被调用方法的形参分配内存空间&#xff0c;并将实参的值按位置一一对应复制给形参&#xff0c;被调用方法中形参得任何改变都不会影响到相应的实参。 引用传递时&#xff1a;系统不是…

【学习笔记十】EWM自动产品包装配置

一、确定包装物料建议的程序 1.定义内向交货处理的凭证类型 2.确定包装物料建议的程序确定原理 使用可以确定包装材料建议的过程来指定业务代码。系统使用这些业务代码查找包装规格。包装期间&#xff0c;系统可建议包装材料。如果系统确定包装规格并建议包装材料&#xff0c;…

Suno AI

Suno is the latest big name in AI, but what is it? Keep reading to learn everything you need to know about Suno AI, including what it is, what it can do, and how much it costs. Suno AI是一款由Anthropic公司开发的人工智能音乐生成器&#xff0c;它利用先进…

Gradle 构建自动化工具入门

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 1. 前言 2. 简介 3. 常见的项目构建工具 4. 安装 4.1. 安装说明 4.2. 下载…

[管理者与领导者-167] :团队管理 - 高效执行力 -6-授权-领导者做个统筹调度的领导者,而不是做冲锋陷阵的士兵

目录 关键词&#xff1a; 前言&#xff1a; 一、管理者做自己该做的事&#xff0c;下属做下属该做的事 二、科学分配任务和职责 三、只有信任员工&#xff0c;才能有效授权 四、授权管头&#xff08;定目标&#xff09;管尾&#xff08;把结果&#xff09;&#xff0c;但…

『大模型笔记』视觉语言模型解释

视觉语言模型解释 文章目录 一. 视觉语言模型解析1.什么是视觉语言模型&#xff1f;2. 开源视觉语言模型概览3. 如何找到合适的视觉语言模型MMMUMMBench 4. 技术细节5.使用变压器 (transformers) 运用视觉语言模型6. 使用 TRL 微调视觉语言模型 二. 参考文章 一. 视觉语言模型…

10.基础乐理-高音点、低音点

首先唱名&#xff08;do、re、mi、fa、sol、la、si 1234567&#xff09;先对应在 小字一组上&#xff0c;一般调号 1c 时都是对应在 小字一组上 然后从 小字一组 开始往左或往右&#xff0c;往左的音是越低的&#xff0c;往右的音是越高的&#xff0c;这时也需要给唱名&#xf…

47---PCIE硬件电路设计

视频链接 PCIe硬件电路设计01_哔哩哔哩_bilibili PCIe硬件电路设计 1、PCIE介绍 1.1、PCIe简介 PCI-Express (peripheral component interconnect express)是一种高速串行计算机扩展总线标准&#xff0c;用于在CPU与外围组件之间实现高速串行通信。如今已成为主板扩展总线…

jenkins+git+maven+nodejs安装(linux系统)

前文已经安装完成sonarqube和Sonar Scanner了&#xff0c;接下来可以开始jenkins了 jenkins安装 命令&#xff08;版本为 2.440&#xff09; wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo wget https://pkg.jenkins.io/redh…

vue 开发 滑动页面中出现tabs 并且需要分页的

效果 需求 我们这个页面顶部有tabs 栏 而且可以滑动到底部 进行分页 实现这样的页面我们应该怎么做 你应该会想到scroll-view 这个组件吧 下面我们来详情介绍一下这个页面的实现和功能开发 首先展示一下代码 item 循环项 <template><div class"wechat-or…

Clustering and Projected Clustering with Adaptive Neighbors 论文阅读

1 Abstract 许多聚类方法基于输入数据的相似性矩阵对数据组进行划分。因此&#xff0c;聚类结果高度依赖于数据相似性学习。由于相似性度量和数据聚类通常是分两步进行的&#xff0c;学习到的数据相似性可能不是数据聚类的最佳选择&#xff0c;从而导致次优结果。在本文中&…

蓝牙耳机哪个品牌的好?五款实力超群品牌分享推荐!

​音乐不仅仅是一种娱乐&#xff0c;它还能激发灵感、放松心情。一款优质的蓝牙耳机能够让音乐体验更加丰富和便捷。在众多的蓝牙耳机中&#xff0c;我特别挑选了几款在音质、设计和功能上都表现出色的产品。无论你是在家中放松、在健身房锻炼&#xff0c;还是在通勤路上&#…

鸿蒙 UI预览报错

SyntaxError: Unexpected end of JSON input 删除entry下的.preview文件 重新刷新预览

从IPv4到IPv6:解密网络通信的新时代

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 从IPv4到IPv6&#xff1a;解密网络通信的新时代 前言ipv4介绍ipv6介绍IPv4与IPv6的区别IPv4地址枯竭问题和IPv6的解决方案 ipv6的优势IPv6在新兴技术领域的应用 ipv4向ipv6的过渡挑战解决方案IPv6部署…

电压比较器LM339介绍和仿真

电压比较器LM339介绍和仿真 &#x1f4d1;LM339相关特性 工作电源电压范围宽&#xff0c;单电源、双电源均可工作&#xff0c;单电源&#xff1a; 2&#xff5e;36V&#xff0c;双电源&#xff1a;1&#xff5e;18V&#xff1b;消耗电流小&#xff0c; Icc1.3mA&#xff1b;输…

怎么使用JMeter进行性能测试?

一、简介 JMeter是Apache软件基金会下的一款开源的性能测试工具&#xff0c;完全由Java开发。它专注于对我们应用程序进行负载测试和性能测量&#xff0c;最初设计用于web应用程序&#xff0c;现在已经扩展到其他测试功能&#xff0c;比如&#xff1a;FTP、Database和LDAP等。…

CompletableFuture用法详解

CompletableFuture 1 前言1.1 Fork/Join1.2 Future接口的局限性 2 正文2.1 神奇的CompletableFuture2.2 CompletableFuture API2.3 组合式异步编程2.4 几个小例子 1 前言 1.1 Fork/Join 1.概念 Fork/Join 是 JDK 1.7 加入的新的线程池实现&#xff0c;它体现的是一种分治思想…

【项目实战】记录一次PG数据库迁移至GaussDB测试(下)

上一篇分享了安装、迁移&#xff0c;本篇将继续分享迁移前操作、 DRS迁移数据、迁移后一致性检查、问题总结及解决方法。 目录 四、迁移前操作 4.1 源端(PG) 4.2 目标端(GaussDB库) 五、DRS迁移数据 5.1 创建复制用户 5.2创建迁移任务。 六、迁移后一致性检查 6.1使用…