• 数据类型补充和进阶编码


    数据类型补充

    s1 = str(123)
    
    #首字母大写
    s = "alex wusir"
    s1 = s.capitalize()
    print(s1)
    
    # 每个单词首字母大写
    s = "alex wusir"
    s1 = s.title()
    print(s1)
    
    # 统计出现的次数
    s = "alex awusair"
    print(s.count("a"))
    
    # 大小写转换
    s = "alex"
    print(s.swapcase())
    
    # 查找
    s = "alex taibai"
    print(s.find("c"))     # find 查找不到的时候返回 -1
    print(s.index("C"))    # index 查找不到就报错
    
    # 找到所有a的下标
    for i in range(len(s)):
        if s[i] == 'a':
            print(i)
          
    list:
    li = list("815678234")   # 定义的方式
    print(li)
    
    #统计
    print(li.count("1"))
    
    #查看
    print(li.index("1"))
    
    #反转
    li.reverse()
    print(li)
    
    #排序
    li.sort()  # 升序
    li.sort(reverse=True)  # 降序
    print(li)
    
    
    # tuple:
    tu = tuple("12345")
    # 统计
    print(tu.count("3"))
    # 查找
    print(tu.index("1"))
    
    # dict:
    dic = dict(k=1,k1=123,k2="aa",k3=222,k4=1123123)   # 定义方式
    print dic
    dic.popitem()   #随机删除
    print(dic)
    
    # 随机删除
    dic.popitem()
    #python3.6版本 默认删除最后个键值对
    #python3.5版本以前 随机删除
    
    # 批量创建字典
    dic = {}
    dic1 = dict.fromkeys("abcdef",[4,5,6])
    # 第一个参数可迭代对象
    # 第二个参数是每个键对应的值 -- 用的都是同一个内存地址
    dic1["a"].remove(5) #都会删除掉
    print(dic1)
    
    # set:
    s = set("1234")   # 定义方式
    print(s)
    
    # 数据类型转换:
    # str - int # 字符串中必须都是十进制的数,才能进行转换
    s = "abc"
    n = int(s)
    print(n,type(n))
    
    # int - str
    n = 123
    s = str(n)
    print(s,type(s))
    
    # str - list
    s = "123"
    li = list(s)
    print(li)
    
    list - str
    li = ["12","3"]
    s = str(li)
    print(s,type(s))
    print(''.join(li))  #join 不能有数字
    
    
    # 面试题:
    # 把字符串转化成列表
    print(s.split())
    # 把列表转换成字符串
    print(''.join(li))
    
    # list - tuple
    li = [1,2,3]
    tu = tuple(li)
    print(tu)
    
    # tuple - list
    tu = (1,2,3)
    li = list(tu)
    print(li)
    
    # set - list
    s = {12,3,4}
    print(list(s))
    
    # list - set
    li = [1,2,3]
    s = set(li)
    print(s)
    
    
    
    
    # 总结:
    #     字符串 -- 数字:字符串中必须都是十进制的数字
    #     数字 -- 字符串:直接转换
    #     列表 -- 字符串:''.join() -- 可迭代的对象中不能出现数字
    #     字符串 -- 列表:split
    #     除字典外,容器数据类型之间可以直接相互转换
    
    # 总结:
    #     str,int,bool,list,tuple,dict,set
    
        # 有序:
        #     str,int,bool,list,tuple
        # 无序:
        #     dict,set
        # 可变:
        #     list,dict,set
        # 不可变:
        #     str,int,bool,tuple
    
        # 访问方式:
        #     直接访问:int,bool,set
        #     顺序访问:list,tuple,str
        #     通过键访问: dict
    

    一些易混淆点

    li = [1,2,3,4]  # [1,3,4]
    # # 索引值是奇数的删除
    for i in range(4):
        if i % 2 == 1:
            li.pop(i)   # 会报错
    print(li)
    
    # 面试题:
    li = [1,2,3,4,5]   #[1,3,4,5]
    # # 索引值是奇数的删除
    for i in range(4):
        if i % 2 == 1:
            li.pop(i)   # 结果不对
    print(li)
    
    #因为列表正向会自动补位,所以刚好错过
    
    li = [1,2,3,4,5]
    for i in range(len(li)-1,-1,-1):
        if i % 2 == 1:
            li.pop(i)   # 倒序删除
    print(li)
    
    # 偷换感念
    li = [1,2,3,4,5]
    new_li = []
    for i in range(len(li)):
        if i % 2 == 1:
            new_li.append(li[i])
    for em in new_li:
        li.remove(em)
    print(li)
    
    li = [1,2,3,4,5]
    for i in range(len(li)-1,-1,-1):
        if i % 2 == 1:
            del li[i]   # 倒序删除
    print(li)
    
    li = [1,2,3,4,5]
    del li[1::2]
    print(li)
    
    # 使用for删除列表的时候从左向右删除,会报错.结果不对
    
    
    dic = {"k1":"v1","k2":"v2"}
    for i in dic:
        dic["k3"] = "v3"
    print(dic)
    
    # 面试题:
    li = [1,2,3,4]
    for i in li:
        li.append(i)
    print(li)  #会一直重复添加,因为循环一个一直在变化的列表,是没有尽头的
    
    # 不能在遍历字典本身中改变大小,要批量删除字典的键值对
    
    dic = {"k1":"v1","k2":"v2","k3":"v3"}
    for i in dic:
        dic["k7"] = "1"
    print(dic)
    
    li = []
    for i in dic:
        if i == "k1" or i == "k3":
            li.append(i)
    for em in li:
        dic.pop(em)
    print(dic)
    
    
    

    编码进阶

    # 回顾:
    # ascii     不支持中文
    # gbk       国标   中文2 英文1
    # unicode   万国码 英文2 中文4
    # utf-8     英文1  欧洲2 亚洲3
    
    # 硬盘中存储的是     字节
    # 今天晚上去洗脚  gbk 010101010101 传输字节  010101010101  gbk 今天晚上去洗脚
    
    # s = "abc"
    # print(s.encode("gbk"))
    # b'xc6xe6xc6xe6'  -- 字节
    # b'abc'
    # s = "aaaa"
    # s1 = b"aaaa"
    
    # s = "今天晚上,吃鸡!"
    # s1 = s.encode("gbk")  # 中文转换成字节  -- 编码
    # s1 = s.encode("utf-8")  # 中文转换成字节  -- 编码
    # b'xbdxf1xccxecxcdxedxc9xcf,xb3xd4xbcxa6!'
    # print(s1.decode("utf-8"))  #字节转换成字符串 -- 解码
    
    
    # python3内存使用的就是unicode
    # python2内存使用的就是ascii
    
    # s = "你好"
    # s1 = s.encode("utf-8")  # 字节
    # print(s1)  # 6个字节
    # print(s1.decode("gbk"))  # 3个字
    

    结论:用什么编码就用什么解码

  • 相关阅读:
    做好最后的1%
    南海城市大脑二期测试的思考
    职场动物进化手册
    搜索框测试用例
    三月版三一金票需求测试总结
    “魔鬼”隐藏在细节中
    java----jdbcTemplate
    内网隧道与SOCKS代理思路总结
    一些免杀方法测试
    JavaScript 关于闭包、同步、异步问题
  • 原文地址:https://www.cnblogs.com/li-dong-yu-95-11-21/p/11010409.html
Copyright © 2020-2023  润新知