• 编码转换,基础补充,深浅拷贝,id is == ,代码块(了解),小数据池(了解)


    1.编码转换:

      ASCII:最早的编码

      GBK:中文国标码,包含了ASCII编码.

      UNICODE:万国码,包含了ASCII

      utf-8:可变纬度的万国码,是unicode的一种实现

    综上:除了ASCII码以外,其他信息不能直接转换.

      unicode是万国码,什么内容都可以进行显示,那么数据传输和存储的时候由于unicode比较浪费空间和资源.需要把unicode转存成utf-8或者GBK进行存储.

      在python中的转换过程:

        把文字信息进行编码,编码之后的内容就可以进行传输了.编码之后的数据是bytes类型的数据.

    数据还是原来的,只是表现形式发生了变化.

      bytes的表现形式:

        1. 英文: b' alex' 英文的表现形式和字符串没什么两样

        2.中文:  b'xe4xb8xad' 这是一个汉字的utf-8的bytes表现形式

     英文的编码:

    s = "alex"
    print(s.encode("utf-8"))
    print(s.encode("GBK"))
    结果:

    b'alex'
    b'alex'

     中文的编码:

    s = "猪蹄"
    print(s.encode("utf-8"))
    print(s.encode("GBK"))
    结果:

    b'xe7x8cxaaxe8xb9x84'
    b'xd6xedxccxe3'

     ####英文的编码之后的结果和原字符串一样,中文的编码之后的结果根据编码的不同,结果也不同

    编码和解码:

      编码和解码的时候必须都需要一样的格式.

      

    s = "zz"
    s1 = s.encode("GBK")
    s2 = s1.decode("utf-8")
    print(s2)
    结果:
    zz

    2.基础数据类型补充

    lst = [1,2,3,4,5,6]
    for i in lst:
        lst.append(7) # 这样写法就会一直持续添加7
        print(lst)
    print(lst)

    列表:循环删除列表中的每一个元素

    li = [ 11,22, 33, 44]
    for i in li:
        li.remove(i)
    print(li)
    结果:
    [22, 44]

    for运行过程中,循环进行到下标[0]也就是11时,remove i 也就是删除掉11,后面的元素自动向前挪一位,下标变成减一,再次循环是是下标[1]的元素33此时remove删除的就是33.

    正确的做法:

    li = [11, 22, 33, 44]
    for i in range(len(li)):
        li.pop()
    print(li)
    结果:
    []

    由于删除元素会改变元素的索引,所以容易出问题,尽量不要在循环中直接删除元素,可以吧要删除的元素放到另一个集合再进行批量删除 

    dict中的fromkey(),可以帮我们通过list来创建一个list:

    dic = dict.fromkeys(["周杰伦","马化腾"],["jj","gg"])
    print(dic)
    结果:
    {'周杰伦': ['jj', 'gg'], '马化腾': ['jj', 'gg']}

    dict.fromkIeys第一个是指的字典的键,第二个指的是字典的值.

    dic = {'k1': 'alex', 'k2': 'wusir', 's1': '金老板'}
    dic_del_list = []
    for i in dic:
        if 'k' in i:
            dic_del_list.append(k)
    for el in dic_del_list:
        del dic[el]
    print(dic)

     字典中的元素在迭代过程中是不允许进行删除的

    要把要删除的元素暂时保存到第二个list中,然后循环list,再删除

    类型转换:

           元组 => 列表 list(tuple)

      列表 => 元组 tuple(list)

      list=>str str.join(list)

      str=>list str.split()

      转换成False的数据:

       0,'',None,[],(),{},set() ==> False 

     深浅拷贝:

    浅拷贝:只会拷贝第一层,第二层的内容不会拷贝.

    深拷贝:把元素内部的元素完全进行拷贝复制. 不会产其中一个个改变另一个跟着改变的问题

       

  • 相关阅读:
    P1091,P1017
    二维ST表模板
    【ybtoj】【堆的应用】内存管理
    【ybtoj】【RMQ问题】降雨量
    【ybtoj】【RMQ问题】与众不同
    【ybtoj】【倍增问题】运输计划
    【ybtoj】【倍增问题】删边问题
    【ybtoj】【倍增问题】图上查询
    【ybtoj】【倍增问题】货车运输
    【ybtoj】【强连通分量】软件安装
  • 原文地址:https://www.cnblogs.com/shicongcong0910/p/10219299.html
Copyright © 2020-2023  润新知