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\n123’

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

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

          假定字符串为 : C:\Users\Pluto

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

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

    例如 :

             “C:\\Users\\Pluto”

             r“C:\Users\Pluto”

  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以内的所有回文数