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;而且许多项目都是基于gym游戏进行开发的简单项目&#xff0c;并未涉及使用前沿的carla环境等自…

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

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

Jvm垃圾回收器cms和g1区别

Jvm垃圾回收器cms和g1区别 G1垃圾回收器&#xff08;Garbage First&#xff09;和CMS &#xff08;Concurrent Mark-Sweep&#xff09;垃圾回收器是Java虚拟机&#xff08;JVM&#xff09;&#xff09;中的两种不同的垃圾回收策略&#xff0c;它们各有优缺点。以下是两者的比较…

【Camera2 教程二】Camera2相机打开和关闭接口调用详细说明

上一章《Camera2教程一》里我们介绍了一些 Camera2 的基础知识,但是并没有涉及太多的 API,从本章开始我们会开发一个具有完整相机功能的应用程序,并且将相机知识分成多个篇章进行介绍,而本章所要介绍的就是相机的开启流程。 阅读本章之后,你将学会以下几个知识点: 如何…

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 微调视觉语言模型 二. 参考文章 一. 视觉语言模型…

在Python中如何使用正则表达式? —— 使用Python正则表达式高效处理文本。

在Python中使用正则表达式&#xff0c;你需要导入re模块。re模块提供了一组函数&#xff0c;用于在字符串中搜索匹配特定模式的文本。 下面是一些常用的正则表达式函数&#xff1a; re.search(pattern, string)&#xff1a;在字符串中搜索匹配正则表达式pattern的文本&#x…

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…

全方位深入解析CSS background属性

CSS的background属性是我们进行网页布局和设计时不可或缺的一部分&#xff0c;它为元素提供了丰富的背景绘制能力&#xff0c;包括颜色、图像、渐变、重复模式、定位、剪裁等。本文将深入解析background属性的各个组成部分&#xff0c;通过详细的理论讲解与实战代码示例&#x…

【刷题笔记】第四天

文章目录 [2924. 找到冠军 II](https://leetcode.cn/problems/find-champion-ii/description/?envTypedaily-question&envId2024-04-13!!!)题目描述思路分析 [1702. 修改后的最大二进制字符串](https://leetcode.cn/problems/maximum-binary-string-after-change/)题目描述…

学习java第四十四天

Resource 是如何被查找、加载的 Resource 接口是 Spring 资源访问策略的抽象&#xff0c;它本身并不提供任何资源访问实现&#xff0c;具体的资源访问由该接口的实现类完成——每个实现类代表一种资源访问策略。 Spring 为 Resource 接口提供了如下实现类&#xff1a; UrlRes…

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

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

dataease部署安装手册

离线安装 1 环境要求 部署服务器要求&#xff1a; 操作系统: Ubuntu 22.04 / CentOS 7 64 位系统CPU/内存: 4核8G磁盘空间: 200G 2 下载离线安装包 请自行下载 DataEase 最新版本的基础安装包&#xff0c;并复制到目标机器的 /tmp 目录下。 安装包下载链接: 开源社区 - FI…