• Python 基础合集1:基本数据类型


    一、前言

    本小节主要记录几种基础数据类型:整型、浮点型、字符串、复数、布尔值,以及类型转换。中间穿插变量和输入的相关知识点。

    环境说明:根据下图操作,出现 >>>,就可以在后面敲相关的代码。
    image.png

    二、基本数据类型

    1.1 整型int

    常用四种进制即表达方式:

    • 十进制:0~9
    • 二进制:0B或0b,0和1
    • 八进制:0O或0o,0~7
    • 十六进制:0X或0x,09到AF
    >>> 10
    10
    >>> 0b10
    2
    >>> 0o10
    8
    >>> 0x10
    16
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    支持四则运算:乘除加减。
    幂运算:x**i,i 可为整数或分数或小数

    >>> 1+2
    3
    >>> 1-2
    -1
    >>> 1*2
    2
    >>> 1/2
    0.5
    >>> 2**3
    8
    >>> 2**0.5
    1.4142135623730951
    >>> 2**(1/2)
    1.4142135623730951
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    image.png

    1.2 浮点型float

    Python没有double类型,小数使用float类型。
    查看精度:

    >>> import sys
    >>> sys.float_info
    
    • 1
    • 2

    一般为15个数字的准确度,Python支持无限制且精确的整数计算,如果浮点数精度要求比较高,也可以考虑放大倍数,采用整数来运算。

    浮点数运算同整型。

    1.3 复数complex

    实部+虚部,表示为:a+bj
    实部和虚部均为浮点数,可以用z.real和z.imag分别获取实部和虚部。

    >>> z = 1.2+2.1j
    >>> z.real
    1.2
    >>> z.imag
    2.1
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意直接写的时候需要加括号,将复数括起来,如

    >>> 1.2+2.1j.imag
    3.3
    >>> (1.2+2.1j).imag
    2.1
    
    • 1
    • 2
    • 3
    • 4

    1.4 布尔值bool

    bool 是 int 的子类,True == 1,False == 0
    常见容易混淆的False布尔值:

    • None
    • 数字:0,0.0,0.j
    • 任意空:‘’,(),[],{}

    1.5 字符串str

    表现形式:用单引号、双引号、三引号括起来。
    Python内部以Unicode编码存储字符串,Unicode是真正的字符串,而用ASCII、Utf-8、GBK等字符编码表示的是字节串。

    >>> a = 'Xin学数据'   # Unicode每个单位算一个字节
    >>> len(a)
    6
    >>> g = a.encode('gbk')
    >>> len(g)           # gbk中文占2个字节
    9
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    查看对象的方法:dir()。如:查看字符串的方法:dir(str)
    如果知道某个方法查用法,可以用help(),如:help(str.upper)

    1.5.1 字符串运算

    字符串运算:s、s0 表示字符串,i、j、m 表示整数

    • 连接:s+s,字符串的拼接,
    • 复制:si 或 is,对s 复制 i 倍,然后拼接在一起
    • 子串判断:s0 in s,判断s0 是否在 s 中
    • 索引:s[i],取s 的第 i 位上的字符。i 为正数时,从左边起,从0开始递增;i 为负数时,从右边起,从-1 开始递减。
      • image.png
    • 切片:s[i:j:m]
      • i 是起始位置,遵循左取规则,为空表示从0开始,即取首个字符
      • j 是结束位置,遵循右不取规则,即取到 j-1 位,为空表示取到最后一个字符(关于右不取,可以这么思考现实一般是从1开始,如第1个,不会说第0个,但Python这里计数是从0开始算,相对1退了1,为了保证取的个数不变,所以 j-1,即不取右边缘。ps:不理解这括号的文字也没关系,用多了就熟悉了。)
      • m 是步长,隔多少个字符取一次,默认是1,为1时可省略
      • 取数的个数:( j - i ) / m 取整,m取默认值1时,就是 ( j - i ),如果 j 是空则为len(s)如果 i 为空则为 0。
      • 如:
        • s[0:4] 取出 0、1、2、3 位上共4个元素返回一个新的字符串;
        • s[0:4:2] 在 0、1、2、3 位上隔一位取值,即取 0、2 位上共2个元素返回一个新的字符串;
    >>> s = 'hello'; s0 = 'lo'
    >>> i = 1; j = 3; m = 2
    >>> s = 'hello world'; s0 = 'wo'
    >>>
    >>> s = 'hello world'; s0 = 'wo'
    >>> i = 1; j = 3; m = 2
    >>>
    >>> s = 'hello world'; s0 = 'wo'
    >>> i = 1; j = 7; m = 2
    >>> s + s
    'hello worldhello world'
    >>> s * m
    'hello worldhello world'
    >>> s0 in s
    True
    >>> s[i]
    'e'
    >>> s[i:j:m]
    'el '
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    1.5.2 输入和输出

    • input():输入的任何信息都会被转化为字符串
    • eval():去引号,返回原来的对象
    • type():查看数据类型
    • id():查看对象的空间编号(主要用来查看对象是否指向同一空间)
    >>> a = 3
    >>> b = input('输入a:')
    输入a:a
    >>> b
    'a'
    >>> type(b)
    <class 'str'>
    >>> c = eval(input('输入a:')) # 输入a之后,相当于是c = a
    输入a:a
    >>> c
    3
    >>> type(c)
    <class 'int'>
    # c 和 a 指向同一个空间
    >>> id(a)
    3254664325488
    >>> id(c)
    3254664325488
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    1.5.3 转义

    转义就是使得有特殊功能的字符失去相关功能,或者使得没有特殊功能的字符拥有某个功能。

    # 本身单引号是声明字符串使用的,加上\之后变成了普通的单引号,可以直接输出
    >>> 'I\'m ok.'
    "I'm ok."
    # 测试环境直接输入,不能直接输出\n 的换行的效果,需要改用打印
    >>> "I'm \n ok."    # 用双引号括起来时,单引号可以不用加\
    "I'm \n ok."
    # 改用print()打印输出,将\n 作为换行打印
    >>> print("I'm \n ok.")
    I'm
     ok.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    补充:在字符串存放的时候转义符 \n 还是存为 \n,打印时才转义。

    常见的转义符号即含义:

    符号含义
    \b退格(BS),将当前位置移到前一列
    \n换行(LF),将当前位置移到下一行开头
    \r回车(CR),将当前位置移到本行开头
    \t水平制表(HT),跳到下一个Tab位置(制表符Tab)
    \v垂直制表(VT)
    \\打印一个反斜线字符\

    三、类型转换

    • int():转为int,字符串转为int()不能带小数点,如:int(‘1.0’)会报错,需要先用float()进行转化
      • image.png
    • float():转为float
    • str():转为str
    • complex():转为复数,如complex(9),返回(9+0j)
    • chr(i):返回整数 i 所对应的 Unicode 字符,可以是十六进制,如chr(0x61)
      • image.png
    • ord(s):返回字符串s 所对应的 Unicode 值,如ord(‘a’)
      • image.png
    • hex():转为十六进制
      • image.png
    • oct():转为八进制
      • image.png
    • int(x, base=y):转为十进制,x为y进制时的值,x为字符串,如
      • int('10',8),八进制的10,即8;
      • int('a', 16),十六进制的a,即10;
      • int('0xa',base=16),同样表示十六进制的a,即10。
      • image.png

    四、 小结

    都是一些比较琐碎的知识点,篇幅也控制的比较友好,直接看即可。

    下篇预告:字符串格式化。

  • 相关阅读:
    数据复制系统设计(3)-配置新的从节点及故障切换
    从压测碰到的诡异断连问题聊聊Nginx的连接管理
    计算机毕业设计ssm生活敲门6m8ht系统+程序+源码+lw+远程部署
    生活中的省电小窍门
    计算机网络:广域网的基本概念
    断言,类型守卫,联合声明
    Redis面试题(2022)
    318. 最大单词长度乘积
    不仅仅是钥匙防丢器,Numy防丢器还支持苹果Find My功能
    配置自己的docker开发环境
  • 原文地址:https://blog.csdn.net/qq_45476428/article/details/126780655