• 第三章 -- Python的基本数据类型


    Python的基本数据类型

    基本数据类型 – 数值

    一 数值类型(不可变数据类型) :

      整型(int)  浮点型(float)  复数类型(complex)  à 数值运算过程下,会自动从左到右进行转换

      布尔类型(bool)  à 只有 True 和 False 两种结果 ;

        1     bool 继承了 int 类型,因此可直接使用 bool 参与数学运算 ,int(True) = 1 , int(False) = 0

        2     非零,非空为 真 , 零值,空值为假

      PS –

        type( )   函数可以参与 数据类型的查看

        强制类型转换  int  float  complex

             关于 float  涉及的运算精度问题 – 有效保证 小数点后16位

        int(“整数字符串”,n) 

          int(“111”) à 111 默认转化为十进制数 111

        int(“111”,2) à 7 指定参数 2 将其转化为二进制数 7

    二 数值运算

      1  算数运算  +  -  *  **  /  //  % 

        Ps –

          “/” 真除法,以实际结果为准,保留至少一个小数位,最多保留16位

          “//”, “%”  取整,取余 ,运算结果的类型取决于操作数的类型

      2  比较运算  ==  !=  >  <  >=  <=

        Ps –

             数值进行比较时,以大小进行比较 ; 字符进行比较时,转化为 ASCII对应的值进行比较

      3  赋值运算符  =  +=  -=  *=  /=  **=  %=  //=

      4  位运算 &  |  ~  ^  <<  >>

        Ps –

             处理位运算的过程中,需要首先将其转换为 二进制 模式进行处理,然后按照对应位以相应的位运算法则进行处理

      5  逻辑运算  and  or  not

        Ps –

             and  or  参与的运算 ,其结果为对象的值

             not          参与的运算 ,其结果布尔类型(True,False)

      6  成员运算符  in , not in

        Ps –

             成员运算符,对其结果的判定取决于两个条件:值与类型

      7  身份运算符  is , not is

        Ps –

             用于比较两个对象的内存地址,可用于判定两个变量是否应用于一个相同的对象

    三   关于小数的精度处理

      A 由于整数可以处理任意大类型的数,故可以将某些小数进行整数化(放大)

      B 小数对象 – 使用 decimal 包下的 Decimal 函数创建

          看作固定精度的浮点数,它有固定的位数和小数,可以满足要求的精度计算

       

       

           C 分数 – 使用 fractions 模块下的 Fraction函数来创建

                         使用分数可以有效的避免浮点数误差

          

      PS –

        Python 变量与对象

             X = 5

             Python 在执行上述语句的过程中包含了3大步骤:

          1     创建表示 整数的对象 5 , 在 Python 中的数据都是以对象方式存在

          2     检查变量 X 是否存在 , 不存在则创建它

          3     建立变量 X 到 5 之间的关系—变量 X 引用对象 5

      Ps – Python 中使用变量时,必须理解下面几点:

        1       变量在第一次赋值时被创建,再次出现时直接使用

        2       变量没有数据类型的概念,数据类型属于对象,类型决定了对象在内存下的存储模式

        3         变量引用了对象,当在表达式中使用变量时,变量立即被其引用的对象替代,所以变量在使用前必须对其赋值

      Ps--Python 对象的垃圾回收

             当对象没有任何引用时,其占用的内存空间会被自动回收

             在 Python 内部,Python 为每一个变量创建一个计数器,计数器记录对象的引用次数;若计数器为0,则对象被删除,其占用的空间将会被回收

      补充:

             1  关于变量名的命名规则 –

                前后有下划线的变量,通常为系统变量 ;例如 _name_ , _doc_ …

                     以一个下划线开头的变量,不能被 from … import *  语句从模块下导入 ;例如 _abc

                     以两个下划线开头无下划线结尾的变量是类的本地变量 ;例如 __abc

             2  关于赋值语句 –

               一 序列赋值

          1  “=” 左侧是元组,列表表示的变量名,右侧是元组,列表,字符串等

                 x,y = 1,2

                 [x,y] = (10,20 )

                 [x,y] = [20,”abc”]

                2  当“=” 右侧是字符串时,Python会将字符串分解为单个字符,依次赋值给各个变量

                 (x,y,z) = ‘abc’

                 ((x,y),z) = ‘abc’

           3  可以在变量名之前合理使用 * 号,此时,不带星号的变量匹配一个值,其余的都将赋给星号的变量

            x,*y = ‘abcd’

            *x , y = ‘abcd’

            x,*y,z = ‘abcd’

                  二   多目标赋值

                         使用 =  实现连续赋值

                         a = b = c = 10

                  三    关于变量的共享引用

                         可以借助 身份运算符 is 来判断两个变量是否引用于同一个对象

                         x = 4

                         y = x

                         x = 7

                     思考  y 是否会受到 x 的影响

                         x = [4,5,6]

                         y = x

                         x[0] = 7

                     思考  y 是否会受到 x 的影响

    基本数据类型 – 字符串

    一    字符串的表示及其用法—

      表示方法 :

        1. 通过引号进行表示  例如: ‘a’   “a” 等

        2. 利用内置的 str 函数 进行转换  例如: str(123)

        3. 使用带有 r或R/b/B前缀的Raw字符串 例如: r’abc 123’

        4. 使用带有 u或者U 前缀的 Unicode 字符串 例如: u’asdf’

       思考题: 如何有效完成一个路径字符串的输入

              假定字符串为 : C:UsersPluto

        1  借助转义字符 来实现对 “”的处理

        2  采用使用带有 r或R/b/B前缀的Raw字符串

        例如 :

                 “C:\Users\Pluto”

                 r“C:UsersPluto”

      PS – 转移字符

        

                 Ps – bytes 字符串

                                表达式 à b+传统字符串  例如:b’a’ , b’123’ , b’Python code’ ,

                                注意:

              字符串中只包含 ASCII 码字符

              使用时,bytes字符串返回对应的字符的 ASCII 码

          

    二    字符串的相关运算

            索引与切片

             例如:给定一个字符串 String =  “987654321”

    正向

    0

    1

    2

    3

    4

    5

    6

    7

    8

    元素

    9

    8

    7

    6

    5

    4

    3

    2

    1

    反向

    -9

    -8

    -7

    -6

    -5

    -4

    -3

    -2

    -1

          

      1 利用索引进行值的选择,

        例如   取出当前元素 String 中的 6  ,可以采用如下方式

        

           2  利用索引来完成切片选择

             例如:  利用正向 取出一定范围的元素 654 ,可以采用如下方式

        

                  例如:  利用反向 取出一定范围的元素 456 ,可以采用如下方式

            

      PS – 关于利用索引进行切片的过程中,需要特别注意,在已经给定的方向上,一般要满足两个条件,其一一致方向,其二起始值小于终止值

           一个的格式如下:

                         String[ start : end : step ]  其中 start 代表起始值 , end 代表终止值,step 可以约束方向以及数据间隔

           例如

          

           3  计算字符串的长度 --   len( ) 函数

          

           4  关系判断 --  in  ,  not  in

      

           5  字符串的连接

      1       *  完成的复制(只可以乘以一个 正整数类型)

      2       +  完成组合

      

      6  字符串的迭代  -- 可利用 for 循环迭代来处理序列类型的字符串

        序列迭代的模式有两种:一种是元素的迭代,一种是索引的迭代

          

           补充  --  字符串的格式化输出

                  一  以 % 占位符模式  

                         譬如  print("The %s's price is %4.2f" %("apple",2.5))

                                字符串之前的部分表示格式化表达式输出的部分

                                字符串之后的部分表示参数列表部分

                          

                         PS - 格式化表达式的基本结构

                                %[填充方式][对齐方式][数字宽度][小数点位数][格式化输出类型]

                         格式化控制符 --

                        

              

                  二  以 格式化输出函数  format

                         格式:<模板字符串>.format(<逗号分隔的参数>)

                         格式化输出 – 槽与槽位

                        

           

                             槽内部对格式化的配置方式

                               

                                例如:

            

               

                         字符串的常用方法  -- "方法"特指<a>.<b>()风格中的函数<b>( )

                         str.lower() str.upper()  返回字符串的副本,全部字符小写/大写

                         str.split(sep=None)  返回一个列表,由str根据sep被分隔的部分组成

                         str.count(sub)       返回子串sub在str中出现的次数

                         str.replace(old, new)    返回字符串str副本,所有old子串被替换为new

                         str.center(width[,fillchar])  字符串str根据宽度width居中,fillchar可选

                         str.strip(chars)      从str中去掉在其左侧和右侧chars中列出的字符

                         str.join(iter)   在iter变量除最后元素外每个元素后增加一个str

                        

           补充 -- 一些以函数形式提供的字符串处理功能

          

           补充:Unicide编码 -- 统一字符编码,即覆盖几乎所有字符的编码方式;从0到1114111 (0x10FFFF)空间,每个编码对应一个字符;Python字符串中每个字符都是Unicode编码字符

       

    练习题 :

      1          随机生成 20 个数 , 完成这20个数的 均值,方差以及标准差的计算

      2          完成任意给定的两个数的最大公约数的计算

      3          试给出如下数列的前21项:

          1  1  2  3  5  8

      4          输出九九乘法表

      5          输出21层金字塔

      6          输出 1-1000以内的所有回文数

  • 相关阅读:
    Codevs 1404 字符串匹配(Kmp)
    Hdu 4333 Revolving Digits(Exkmp)
    Poj 3461 Oulipo(Kmp)
    Bzoj 1877: [SDOI2009]晨跑(费用流)
    P1379 八数码难题
    P2324 [SCOI2005]骑士精神
    记 给61级讲课
    迭代加深 A* IDA* 初探
    P1347 排序
    P1888 三角函数
  • 原文地址:https://www.cnblogs.com/Skypeduty1225/p/13815632.html
Copyright © 2020-2023  润新知