• 编码转换,基础补充,深浅拷贝,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 

     深浅拷贝:

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

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

       

  • 相关阅读:
    【转载】C#中List集合使用Remove方法移除指定的对象
    【转载】C#中List集合使用RemoveAt方法移除指定索引位置的元素
    【转载】C#中ToArray方法将List集合转换为对应的数组
    【转载】C#中List集合使用RemoveRange方法移除指定索引开始的一段元素
    【转载】C#中Add方法将往List集合末尾添加相应元素对象
    【转载】C#中List集合使用Reverse方法对集合中的元素进行倒序反转
    【转载】C#中通过Distinct方法对List集合进行去重
    【转载】 C#中使用CopyTo方法将List集合元素拷贝到数组Array中
    【转载】 C#中通过Where方法查找出所有符合条件的元素集合
    Android -- Camera聚焦流程
  • 原文地址:https://www.cnblogs.com/shicongcong0910/p/10219299.html
Copyright © 2020-2023  润新知