• 深浅拷贝,元组类型,字典类型,字符编码


    复习:

    1.深浅拷贝

    值拷贝:直接赋值  =  号, 列表中的任何值发生改变,第二个中的值都会随之改变
    浅拷贝:通过copy()方法 ls2 = ls.copy(),第一个中存放的值的地址没有改变, 但内部的值发生改变,第二个会随之改变
    深拷贝:通过deepcopy()方法 ls3 = deepcopy(ls),第一个中存放的值发生任何改变,第二个都不会随之改变

    2.元祖类型

      tuple()

    元组:可以理解为不可变的列表
    # 1.值可以为任意类型
    # 2.可以存放多个值 - 可以进行成员运算
    # 3.可以存放重复的值 - 可以计算成员出现的次数
    # 4.有序存储 - 可以通过索引取值,可以切片

    3.字典类型

    # 容器(集合):存放多个值的变量
    # 单列容器(系统中的单列容器很多):list | tuple
    # 双列容器(map):只有dict,存放数据 成对出现,dict存放数据采用 key-value键值对方式


    # 字典中的key可以为什么类型:key必须为不可变类型
    #       -- key是取value的唯一依据,key一旦被确定,就需要唯一确定(不能被改变)
    # 字典中的value可以为什么类型:value可以为任意类型
    #       -- value是用来存放世间所有存在的数据

    字典的增删改查:(详见day06的博客)

    update(dict).  将新的字典添加到原字典中,如果原字典已经存在,则不做改变,原字典中不存在,则添加。

          若已存在原字典的key,则更新value

    # dic = {'a':1,'b':2}
    # dic2={'d':4,'e':6}
    # dic.update(dic2) # 更新字典,如果第一个列表中不存在第二个列表中的key,则添加到新列表中
    # print(dic) # 输出结果为{'a': 1, 'b': 2, 'd': 4, 'e': 6}

    # dic = {'a':1,'b':2}
    # dic2={'d':4,'b':6}
    # dic.update(dic2) # 如果第一个列表中存在第二个列表的key,则会更新value,如果key和value都相同,则不做任何改变
    # print(dic)

    setdefault(key,value):若key已经存在,不做改变,若不存在key,则添加到字典中

    # dic = {'a':1,'b':2}
    # dic.setdefault('c',3) # 添加,将key和value添加到列表,如果key已存在,则不做任何改变
    # print(dic) # 输出结果{'a': 1, 'b': 2, 'c': 3}

    get(key,default):按照key查询字典中是否存在,若存在,返回value,若不存在,返回None

    # dic = {'a':1,'b':2}
    # print(dic.get('a')) # 查询字典中 key,如果存在,则返回值 此处返还值 1
    # print(dic.get('c')) # 如果不存在,则返回None 此处返还 None


    pop(key):根据key值删除值,有返回值。若key存在,则返回value,若不存在,则报错

    pop(keyitem):随机删除字典中的值

    dic = {'a':3,'b':1,'c':2}
    # dic.popitem() # 随机删除一个key,一般是删除末尾,如果删除的字典为空字典,则会报错
    # print(dic) # 输出结果{'a': 3, 'b': 1}

    循环: for k,v in dic.items():  #  使用两个对应关系来接受字典循环的key与value

    dic = {'a':3,'b':1,'c':2}
    print(dic.items()) # 因为字典不可被for循环,可以使用dic.item() 来使字典变成一个列表类型,而内部的key与value变成可遍历的(键, 值) 元组数组
    # 输出结果为 dict_items([('a', 3), ('b', 1), ('c', 2)])


    集合是不可变类型,可增可增,无序无索引无key,不能取值不能改值,可以通过for循环取值,取值的顺序不确定

    特点:不能存放重复的数据,故可以用来去重

    1 .数据类型的相互转换

    1.1)那些类型可以转换为数字

    1.2)数字转换字符串

    1.3)字符串与列表的相互转换  ******

    2 . 字符编码

    2.1)应用程序打开的三个步骤:

    2.1.1)打开应用程序

    2.1.2)将数据加载到内存中

    2.1.3)CPU将内存中的数据直接翻译成字符显示给用户

    2.2)python解释器打开的三个步骤:

    2.2.1)打开python解释器

    2.2.2)将数据加载到内存中

    2.2.3)CPU将内存中的数据执行结果显示给用户,如何解释执行不能通过,错误信息提供给用户

    2.3)乱码:

    存储的编码格式与取出的编码格式不一致,就会出现乱码,为了

    2.4)字符编码:

    2.4.1) 电脑只能识别高低电频对应的 0 ,1,所以就诞生了编码表  

    2.4.2)ASCII 表:英文字母,英文符号,数字与机器能识别的字符的对应关系,一个字母或符号代表一个字节,8个二进制位就能存放所有的对应关系

    2.4.3)GBK:中文与机器能识别的字符所对应关系的表格,它完全兼容ASCII表,而他的中文是由2个字节来表示,16个二进制能存放所有的汉字,和ASCII码的对应关系

    2.4.4)Unicode(万国码):世间常用国家的常用字符,与机器能识别的字符的对应关系表

    2.4)转码:

    2.4.1)Unicode存在汉字与二进制对应关系,GBK也存在汉字与二进制对应关系,它将GBK(或者其他国家定义的字符编码)存放的数据转存到Unicode数据中,只是存放数据采用字节数的长度不一致,UTF-8与UTF-16是Unicode编码表的两种体现方式

    UTF-8:以1个字节存放英文字母,以3或者6个字节来存放汉字,在英文数据过多时,他会更省空间,用来传输效率更高,所以在计算机中,硬盘与内存需要数据传输,所以都采用UTF-8进行传输,而且由的汉字很复杂,所以UTF-8也可以存放更多的汉字。

    而UTF-16,所有支持的符号或者字符都是采用2个字节来存放,读存数据采用定长,不用计算,读存效率高,而内存需要高速读写,所有采用UTF-16的编码

    所以我们存储与读取,一定要同意编码!

  • 相关阅读:
    Warning! PATH is not properly set up...
    用rvm切换ruby
    Mac下多版本JDK安装
    iOS开发 密码里面含有特殊字符如何处理传给后端
    Cornerstone版本回退160013错误
    iOS 11 Xcode9 tableview点击cell上的按钮cell自动往上跳动
    iOS 获取全部字体的Fontfamily和FontName
    iOS WKWebView 点击超链接跳转至Safari
    iOS 11在window上加视图不显示
    Java并发(2)
  • 原文地址:https://www.cnblogs.com/liguodeboke/p/10738915.html
Copyright © 2020-2023  润新知