基本数据类型

本文介绍了Python中的基本数据类型,如数字(整数、浮点数)、字符串、布尔类型,以及它们的特性、转换和运算。同时涵盖了字符串的索引、切片、连接和编码概念,包括ASCII、Unicode、UTF-8和GB2312/GBK等常见字符编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本数据类型

  • Python数据类型

    • 包括数字、字符串、布尔、列表、元组、字典、Bytes、集合这些常用的。

数字类型
  • 数字类型用于存储和表示数学意义上的数值。

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

  • 不可变类型

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

    • 例如:

      • a = 1 # 创建数字对象1

      • a = 2 # 创建数字对象2,并将2赋值给变量a,a不再指向数字对象1

      • 这里,发生了变化的是变量a的指向,而不是数字对象1变成了数字对象2。初学者可能会比较迷糊,但不要紧,可以先试着接受。

  • 整数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,等等。

  • 数字类型转换

    • 有时候,我们需要对数字的类型进行转换。Python为我们提供了方便的内置的数据类型转换函数。

    • int(x):

      • 将x转换为一个整数。如果x是个浮点数,则截取整数部分,去掉小数部分(不四舍五入)。

    • float(x) :

      • 将x转换到一个浮点数,如果x是个整数,则在小数点后加0。

  • 数学计算

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

    • 布尔类型
    • 真与假、0和1,都是传统意义上的布尔类型。

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

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

  • # 布尔类型的数据可以进行运算吗?
    ret = True + True + False
    print(ret)  # 打印结果为2
    # True就表示1False表示0
    字符串类型
  • 字符串是由零个或多个字符组成的有限序列。字符串的内容可以包含字母、标点、特殊符号、中文、日文等全世界的所有字符。

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

  • 字符串特性

    • 1.索引和切片

    • 2.in 关键字判断存在

    • 3.“+”运算符进行连接

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

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

    • 初学者应用索引时尽可能用正向索引,保证代码的可读性。

    • s = "hello world"

      h

      e

      l

      l

      o

      w

      o

      r

      l

      d

      0

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      python支持索引值为负数,从右向左计数,从最后一个元素开始,索引值从-1开始:

      h

      e

      l

      l

      o

      w

      o

      r

      l

      d

      -11

      -10

      -9

      -8

      -7

      -6

      -5

      -4

      -3

      -2

      -1

    • 序列类型支持的操作:
    • # (1)索引取值
      s = "hello world"
      print(s[6])  # w
      print(s[-10])  # e
      
      # (2)切片取值:序列类型对象[start : end : step]
      s = "hello world"
      print(s[1:4])  # ell  :取索引1到索引3(左闭右开)
      print(s[:4])  # hell :start缺省,默认从0取
      print(s[1:])  # ello world : end缺省,默认取到最后
      print(s[1:-1])  # ello worl
      
      print(s[6:9])  # wor
      print(s[-4:-1])  # orl
      print(s[-1:-4])  # 空
      
      # (3)判断存在:Python 中,可以使用 in 关键字检查某元素是否为序列的成员。
      s = "hello world"
      print("world" in s)  # True
      ret = "world" in s
      print(ret)  # True
      
      # (4)支持两种类型相同的序列使用“+”运算符做相加操作,它会将两个序列进行连接,但不会去除重复的元素。
      #  使用数字 n 乘以一个序列会生成新的序列,其内容为原来序列被重复 n 次的结果
      s = "hello" + " world"
      print(s)  # hello world
      s = "*" * 10
      print(s)  # **********
      s = [1, 3, 6] * 3
      print(s)  # [1, 3, 6, 1, 3, 6, 1, 3, 6]
      s = 'yes' * 3
      print(s)  # yesyesyes
    • 多行字符串

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

    • 字符串内置方法

      • 内置方法有很多,但是我们主要记住如下几个即可:

      • s1 = 'hello. how are you'
        #find返回-1说明子串在大的字符串中不存在,否则表示存在find返回值表示子串在大字符串中开始位置的下标
        ret = s1.find('how')
        print(ret)  # 7
        s2 = 'hello. how are you'
        ret = s2.find('how123')  # -1
        print(ret) #find返回值为-1表示子串在大字符串中没有被包含,否则表示被包含
        
        s3 = 'hello-nihao-how-are-you'
        ret = s3.split('-') #字符串切分
        print(ret)   # ['hello', 'nihao', 'how', 'are', 'you']
        
        s4 = ' \t\n hello 你好 \t how are you \t\n'
        ret = s4.strip() #可以将一个字符串首尾的\n \t空格进行剔除
        print(ret)  # hello 你好 	 how are you
        
        s5 = 'www.baidu.com'
        ret = s5.startswith('www') #判断字符串是否以什么开头
        print(ret)  # True
        

        字符编码

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

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

        • ASCII编码:早期专门为英语语系编码,只有255个字符,每个字符需要8位也就是1个字节。不兼容汉字。

        • 百度ASCII编码:ASCII_百度百科

        • Unicode编码:又称万国码,国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。用2个字节来表示汉字。

        • UTF-8编码:为了节省字节数,在Unicode的基础上进行优化的编码。用1个字节表示英文字符,3个字符表示汉字。天生兼容ASCII编码,所以最为流行。

        • GB2312:我国早期自己制定的中文编码,世界范围内不通用。

        • GBK: 全称《汉字内码扩展规范》,向下与GB2312兼容,向上支持ISO10646.1国际标准,是前者向后者过渡过程中的一个承上启下的产物。windows中文版的汉字编码用的就是GBK。也非世界范围通用的编码

        • 其它编码:非以上类型者的统称。属于能不用就不要碰的编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值