• python 自动化之路 day 01.1 数据类型


    一.变量

    变量
    声明变量
    #!/usr/bin/env python

    age=18
    gender1='male'
    gender2='female'

    变量作用:保存状态(程序的运行本质是一系列状态的变化,变量的目的就是用来保存状态,变量值的变化就构成了程序运行的不同结果。)
    例如:CS枪战,一个人的生命可以表示为life=active表示存活,当满足某种条件后修改变量life=inactive表示死亡。
    • 变量命名规则遵循标识符命名规则,详见第二篇
    • name='lhf':'lhf'才是内存变量,name只是内存变量的引用
    • 与c的区别在于变量赋值操作无返回值
    • 链式赋值:y=x=a=1
    • 多元赋值:x,y=1,2 x,y=y,x
    • 增量赋值:x+=1

    二.数据类型

    2.1 什么是数据类型及数据类型分类

    程序的本质就是驱使计算机去处理各种状态的变化,这些状态分为很多种

    例如英雄联盟游戏,一个人物角色有名字,钱,等级,装备等特性,大家第一时间会想到这么表示
    名字:德玛西亚------------>字符串
    钱:10000 ------------>数字
    等级:15 ------------>数字
    装备:鞋子,日炎斗篷,兰顿之兆---->列表
    (记录这些人物特性的是变量,这些特性的真实存在则是变量的值,存不同的特性需要用不同类型的值)

    python中的数据类型
    python使用对象模型来存储数据,每一个数据类型都有一个内置的类,每新建一个数据,实际就是在初始化生成一个对象,即所有数据都是对象
    对象三个特性
    • 身份:内存地址,可以用id()获取
    • 类型:决定了该对象可以保存什么类型值,可执行何种操作,需遵循什么规则,可用type()获取
    • 值:对象保存的真实数据
    注:我们在定义数据类型,只需这样:x=1,内部生成1这一内存对象会自动触发,我们无需关心


    这里的字符串、数字、列表等都是数据类型(用来描述某种状态或者特性)除此之外还有很多其他数据,处理不同的数据就需要定义不同的数据类型

    Python有五个标准的数据类型:

    • Numbers(数字)
    • String(字符串)
    • List(列表)
    • Tuple(元组)
    • Dictionary(字典)
     
    标准类型  其他类型
    数字 类型type
    字符串 Null
    列表 文件
    元组 集合
    字典 函数/方法
     
      模块















    2.2 标准数据类型:

    2.2.1 数字

    定义:a=1

    特性:

    1.只能存放一个值

    2.一经定义,不可更改

    3.直接访问

    分类:整型,长整型,布尔,浮点,复数

    2.2.1.1 整型:

    Python的整型相当于C中的long型,Python中的整数可以用十进制,八进制,十六进制表示。

    >>> 10
    10         --------->默认十进制
    >>> oct(10)
    '012'      --------->八进制表示整数时,数值前面要加上一个前缀“0”
    >>> hex(10)
    '0xa'      --------->十六进制表示整数时,数字前面要加上前缀0X或0x

    python2.*与python3.*关于整型的区别

    python2.*
    在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647

    在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
    python3.*整形长度无限制

    整型工厂函数int()

    2.2.1.2 长整型long:

    python2.*:
    跟C语言不同,Python的长整型没有指定位宽,也就是说Python没有限制长整型数值的大小,
    但是实际上由于机器内存有限,所以我们使用的长整型数值不可能无限大。
    在使用过程中,我们如何区分长整型和整型数值呢?
    通常的做法是在数字尾部加上一个大写字母L或小写字母l以表示该整数是长整型的,例如:
    a = 9223372036854775808L
    注意,自从Python2起,如果发生溢出,Python会自动将整型数据转换为长整型,
    所以如今在长整型数据后面不加字母L也不会导致严重后果了。

    python3.*
    长整型,整型统一归为整型


    2.2.1.3 布尔bool:

    True 和False
    1和0

    2.2.1.4 浮点数float:

    Python的浮点数就是数学中的小数,类似C语言中的double。
    在运算中,整数与浮点数运算的结果是浮点数
    浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,
    一个浮点数的小数点位置是可变的,比如,1.23*109和12.3*108是相等的。
    浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,
    就必须用科学计数法表示,把10用e替代,1.23*109就是1.23e9,或者12.3e8,0.000012
    可以写成1.2e-5,等等。
    整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的而浮点数运算则可能会有
    四舍五入的误差。

    2.2.1.5 复数complex:

    复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
    注意,虚数部分的字母j大小写都可以,
    >>> 1.3 + 2.5j == 1.3 + 2.5J
    True

    2.2.1.6 数字相关内建函数

    2.2.2 字符串

    定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或‘’‘ ’‘’中间包含的内容称之为字符串
    特性:
    1.只能存放一个值
    2.不可变
    3.按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序
    补充:
      1.字符串的单引号和双引号都无法取消特殊字符的含义,如果想让引号内所有字符均取消特殊意义,在引号前面加r,如name=r'l hf'
      2.unicode字符串与r连用必需在r前面,如name=ur'l hf'

    2.2.2.1 字符串创建

    ‘hello world’

    2.2.2.2 字符串常用操作

    移除空白
    分割
    长度
    索引
    切片

    2.2.2.3 字符工厂函数str()

    2.2.3 列表

    定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素
    特性:
    1.可存放多个值
    2.可修改指定索引位置对应的值,可变
    3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序

    2.2.3.1 列表创建

    list_test=[’lhf‘,12,'ok']

    list_test=list('abc')

    list_test=list([’lhf‘,12,'ok'])

    2.2.3.2 列表常用操作

    索引
    切片
    追加
    删除
    长度
    切片
    循环
    包含

    2.2.3.3 列表工厂函数list()

    2.2.4 元组

    定义:与列表类似,只不过[]改成()
    特性:
    1.可存放多个值
    2.不可变
    3.按照从左到右的顺序定义元组元素,下标从0开始顺序访问,有序

    2.2.4.1 元组创建

    ages = (11, 22, 33, 44, 55)

    ages = tuple((11, 22, 33, 44, 55))

    2.2.4.2 元组常用操作

    索引
    切片
    循环
    长度
    包含

    2.2.4.3 元组工厂函数tuple()

    2.2.5 字典

    定义:{key1:value1,key2:value2},key-value结构,key必须可hash
    特性:
    1.可存放多个值
    2.可修改指定key对应的值,可变
    3.无序

    2.2.5.1 字典创建

    person = {"name": "sb", 'age': 18}

    person = dict(name='sb', age=18)
    person = dict({"name": "sb", 'age': 18})
    person = dict((['name','sb'],['age',18]))
    {}.fromkeys(seq,100) #不指定100默认为None
    注意:
    >>> dic={}.fromkeys(['k1','k2'],[])
    >>> dic
    {'k1': [], 'k2': []}
    >>> dic['k1'].append(1)
    >>> dic
    {'k1': [1], 'k2': [1]} 
     

    2.2.5.2 字典常用操作

    索引
    新增
    删除
    键、值、键值对
    循环
    长度

    2.2.5.3 字典工厂函数dict()

    2.2.6 集合

    定义:由不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key
    特性:
    1.集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值

    2.2.6.1 集合创建

    {1,2,3,1}

    定义可变集合set
    >>> set_test=set('hello')
    >>> set_test
    {'l', 'o', 'e', 'h'}
    改为不可变集合frozenset
    >>> f_set_test=frozenset(set_test)
    >>> f_set_test
    frozenset({'l', 'e', 'h', 'o'})

    2.2.6.2 集合常用操作:关系运算

       in
    not in
    ==
    !=
    <,<=
    >,>=
    |,|=:合集
    &.&=:交集
    -,-=:差集
    ^,^=:对称差分

    2.2.6.3 集合工厂函数set()

    2.2.7 bytes类型

    定义:存8bit整数,数据基于网络传输或内存变量存储到硬盘时需要转成bytes类型,字符串前置b代表为bytes类型

    >>> x
    'hello sb'
    >>> x.encode('gb2312')
    b'hello sb'

    2.2.8 数据类型转换内置函数汇总

    注:真对acsii表unichr在python2.7中比chr的范围更大,python3.*中chr内置了unichar

    三.运算符

    1、算数运算:

     

    2、比较运算:

     

    3、赋值运算:

     

    4、位运算:

    注: ~  举例: ~5 = -6  解释: 将二进制数+1之后乘以-1,即~x = -(x+1),-(101 + 1) = -110

    按位反转仅能用在数字前面。所以写成 3+~5 可以得到结果-3,写成3~5就出错了

    5、逻辑运算:

     

    and注解:

    1. 在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。
    2. 在布尔上下文中从左到右演算表达式的值,如果布尔上下文中的所有值都为真,那么 and 返回最后一个值。
    3. 如果布尔上下文中的某个值为假,则 and 返回第一个假值

    or注解:

    1. 使用 or 时,在布尔上下文中从左到右演算值,就像 and 一样。如果有一个值为真,or 立刻返回该值
    2. 如果所有的值都为假,or 返回最后一个假值
    3. 注意 or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值

    and-or结合使用:

    1. 结合了前面的两种语法,推理即可。
    2. 为加强程序可读性,最好与括号连用,例如:
      (1 and 'x') or 'y'

    6、成员运算:

     

    7.身份运算

     

    8.运算符优先级:自上而下,优先级从高到低

    四.标准数据类型特性总结

    按存值个数区分

    标量/原子类型 数字,字符串
    容器类型 列表,元组,字典

    按可变不可变区分

    可变 列表,字典
    不可变 数字,字符串,元组

    按访问顺序区分

    直接访问 数字
    顺序访问(序列类型) 字符串,列表,元组
    key值访问(映射类型) 字典

      

     
     
  • 相关阅读:
    sed思维导图
    Golang计算文件MD5
    grpc入门
    解决使用fastjson时,null值在转JSONObject时丢失的问题
    ArcGIS空间分析案例教程网格和标记生成
    在 VirtualBox VM 中安装 OpenWRT
    aws中各个系统的用户名
    emacs简单配置和scheme环境
    Vue 中引入 json 的三种方法
    Lodash节流和防抖总结
  • 原文地址:https://www.cnblogs.com/yangliheng/p/5966250.html
Copyright © 2020-2023  润新知