• 二.变量及数据类型


    一.变量(*******)

    1.什么是变量
    量:衡量/计量/记录某种状态
    变:记录下的某种状态是可以发生改变的
    变量相当于一个容器,记录事物的状态
    2.为何用变量
    为了让计算机识别各种事物,为了让计算机具有人记录并且识别事物状态的技能。
    3.怎么用变量
    变量的使用必须遵守先定义后引用的原则
    变量的三大组成部分:
    变量名:是访问到值的唯一方式,指向变量值,变量是反映事物的属性或者特征。
    赋值号:将值的内存地址"赋值"给变量名,也就是将变量值和变量名关联起来。
    变量值:事物某种状态。
    变量的是通过变量名引用。
    变量名的大前提:变量名应该见名知意,能够清楚的表达事物的某种属性
    变量值具有三种特征:
    id:是变量值在内存中唯一标识(是根据内存地址计算而来)
    type :不同类型的值是用来记录不同的状态
    value:变量值
    4.变量名的命名规范:只能是数字,下划线,字母的组合
    不能用数字开头,不能用特殊符号,不能与内置变量名冲突
    5.变量名风格包括:
    驼峰体:TarryCode 类的命名推荐使用驼峰体
    下划线体:tarry_code,变量名推荐使用下划线体
    常量:不变的量
    用全大写表示常量,默认的常量书写规范。
    6.type() 查看数据类型

    7.python的内置垃圾回收机制:

    在python中,没当一个变量名被引用的时候,会生成一个引用计数,表明该变量名被引用的次数,当引用计数为0时,会自动断开与变量值内存地址的关联关系,

    由于变量名是访问变量值内存地址的唯一方式,所以当变量名与变量值没有关联时,会自动将这个变量名对应的值回收,这也就是垃圾自动回收机制

    8.变量值的三个特征:

    1.id:变量值的唯一编号,内存地址不同id则不同。

    2.type:类型

    3.value:值

    9.身份运算:is 

    10.bool值:除了0,None,空的bool为False之外,其余的都为True.

    11.逻辑运算:

    or:多个条件满足其中一个就成立

    and:多个条件必须同时满足

    12.小整数池的概念:

    在Python中将数字【-5,256】之间的数字放入一个小整数池中,为了减少内存的使用量,在pycharm中的小整数池的范围更大。

    二.数据类型:数据类型就是不同的变量值的数据类型

    数据类型的不同为了记录不同的事物的属性,如年龄→int,名字→字符串等

    有以下数据类型:

    1.数字类型:int,float

    int:整数型 1,2,3等

    float:浮点型  1.12,2.34等

    2.字符串:

    1>:什么是字符串:字符串就是由一些字符构成的数据类型,在单引号,双引号,三引号中的就是字符串。

    2>字符串的使用方法:str是字符串类,里面存放了字符串的调用方法。

    .rjust():居右填充

    .center()居中填充

    .ljust()局左填充

    .split():分割

    .strip()去空

    .rstrip()右边去空

    .lstrip()左边去空

    .count()判断个数

    .expendtabs():将 转换成空格,可以自己定义,最少定义成4个空格,默认是8个空格

    .join()将列表中的元素以某个字符相连,如 list1= ['a','b','c'] ‘*’.join(list1) = a*b*c,相比字符串的+相连节省内存空间。

    .format():重点  

    三种用法:

    <1>:'{0}{1}{2}'.format(name,age)

    <2>:'{name}{age}{sex}'.format(name='yuan',age=18,sex=male)

    <3>:'{name}{age}{sex}'.format(name:'yuan',age:18,sex:male)

    .find():返回字符串是否找到,找到返回字符的索引,找不到返回-1,不会报错,

    .index():返回字符串是否找到,找到返回字符的索引,找不到报错

    .zifll(width):右对齐,在字符左边填充0,width大于字符长度,才会补充0

    .casefold():将所有大写转换成小写

    .swapcase(self):将大小写互换 如 : ‘aAc’ → ‘AaC’

    .capitalize():首字母大写

    .endwith():以什么开头

    .startwith():以什么结束

    3>.[]切片    

    [开始,结束,步长] :特点,顾头不顾尾

    [::-1]以步长1从后面开始取,

    4>.len()函数:返回对象的长度。len(object)

    3.list:列表:可以记录多个值,是有序的数据类型

    1.增:

    append() 在末尾添加

    extend() 将一个列表循环添加到列表中

    inster(index,object) 按照索引位置添加元素

    2.删

    del () 按照索引 如 del l[1]

    pop() 删除 按照索引 l.pop(index)

    remove(self,object) 按照对象删除 

    3.改 

    l[index]  = new_value

    l.copy() 复制

    4.查

    index()

    .reverse() 列表翻转

    .count() 元素的个数

    .sort(self,key=,reverse=False)  key对应的是排序的全值,比如列表中的元素按长度排序,sort(key=len(),reverse=False)

    reverse默认的升序排序,reverse=True是降序排序

    .clear() 列表清空

    4.元祖 touple 元祖和列表对比来说就是一个不可变的列表,用法类似,可用for循环

    .index() 索引

    .count() 计数

    元祖里面的元素是不可改变的,是不可变数据

    5.字典 dict= {key:value}

    字典是有一个键值对构成的,一个key对应一个value

    字典里面的keys是可以进行for循环的,是有序的。values是无序的,key是取到value的唯一方式

    item对应的是dict的键值对

    增:dict = {}  通过定义去增加元素

    d.setdefault('key':value) 如果原先字典中没有该key对应的值,则添加该键值对,如果有则不对字典中该key的值进行修改,还是返回原先的值

    删:.pop()按照key去删除...popitem() 随机删除字典中的键值对

    改:根据定义来修改

    查:d{'key'}

    d.clear()清除

    d.copy()复制

    1>>.copy有浅拷贝和深拷贝之分,浅拷贝是指拷贝对象的最外层,不对对象里层的数据进行拷贝,就是直接将原对象的引用指向新的对象,当原对象的值进行改变时,新对象的值也会进行变化,而深拷贝是指建立一个新的内存地址,并将原数据指向新对象得内存地址,当原数据的里层数据进行改变的时候,新对象的值不会发生变化,具体看https://blog.csdn.net/w494675608/article/details/82114798。

    6.d.fromkeys(object,default_value) 返回一个新的字典,并且所有key对应的值都相同

    l= ['name','age','sex']

    d= dict.fromkeys(l,123)

    print(d)→{'name':123,'age':123,'sex':123}

    d.get()获取key的value,取不到返回None,可以自定义默认值get('key',"default = None")可以在后面自定义默认值返回值

    d.keys() 所有的keys

    d.update(dict1) 更新 将d更新成dict1,如果d中的key与dict1中的key相同,则将dict1中key的值赋值给d中key对应的值,如果没有,则在d中添加该键值对

    d.values()查看字典所有的key对应的值

    6.集合 set:

    集合是不同元素的无序集合。与序列类型不同(如列表,字符串等),集合是没有切片操作的。

    集合分为两种类型:

    set —— 可变集合。集合中的元素可以动态的增加或删除。
    frozenset —— 不可变集合。集合中的元素不可改变。
    注:对于 并集, 交集, 差集 等的返回值,与最左边的操作数具有相同的类型。例如:s & t 取交集。s集合是一个set类型的集合,t集合是一个frozenset类型的集合,则返回的结果将是set类型的集合。

    s = {1,2,3,4},set是可变的数据类型,set内的元素是不可变的数据类型

    集合:关系测试,天然去重,无序去重的
    set() 没有值就是set

    交集:两个都有   
    差集:在列表A里有,B里没有
    并集:把两个列表里的元素合并在一起,去重

    交集:linux.intersection(python)   linux & python 效果一样
    差集:linux.difference(python) linux - difference  效果一样
    并集:linux.union(python)  linux | python 效果一样

    反向差集(对称差集)

    linux.symmetric_difference(python)  两个都没有的一起打印
    linux ^ python 效果一样

    判断子集:linux.issubset(python) 判断linux是不是python的子集 < 效果一样
    判断父集:linux.issuperset(python) 判断linux是不是python的父集 > 效果一样

    判断两个集合的关联性:linux.isdisjoint(python)  有关联 return true ,else false 
    增:

    union: 只会求一个集合,不会改字典原来的值

    set update类的方法会把原set的值改变

    数据类型的总结:
    按存值个数区分
    1.标量/原子类型 int/string
    2.容器类型 list/touple/dict
    按可变不可变区分
    可变 list,dict ,set
    不可变 string,int,touple,frozenset
    3.按访问顺序
    直接访问 int
    顺序访问(序列类型) list/touple/string
    key值访问(映射类型) dict

     

  • 相关阅读:
    微信小程序:模板消息推送提示{“errcode”:41030,”errmsg”:”invalid page hint: [gP1eXXXXXX]”}
    Linux 定时执行shell脚本命令之crontab
    Ubuntu16.04系统下 解决“无法获得锁 /var/lib/dpkg/lock -open (11:资源暂时不可用)、无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?”的方法
    微信小程序:wx.request之post请求后端无法获取数据的问题
    jQuery获取浏览器参数
    Chrome等浏览器下出现net::ERR_BLOCKED_BY_CLIENT的解决办法
    Thinkphp3.2.3框架下封装公共的函数,例如封装CURL函数来获取接口数据
    Select下拉列表选择自动提交form表单数据
    一步一步从原理跟我学邮件收取及发送 5.C语言的socket示例
    一步一步从原理跟我学邮件收取及发送 4.不同平台下的socket
  • 原文地址:https://www.cnblogs.com/njzy-yuan/p/10584815.html
Copyright © 2020-2023  润新知