类型与运算五

一、数据类型补充

​ 主要针对之前学过的str、list、tuple、dict等进行补充。

  1. 数据类型方法补充

    数据类型 方法 作用
    字符串str s.capitalize() 首字母大写
    s.title() 单词首字母大写
    s.swapcase() 大小写互换
    s.count("") 统计出现次数
    s.find("") 查找索引,找不到返回-1
    s.index("") 查找索引,找不到报错
    列表list s = "拼接项".join(lst) 遍历列表,把列表中的每一项用“拼接项”做拼接,生成字符串
    lst.count("查询的元素") 查询元素出现的次数
    lst.index("") 查找
    lst.sort() 升序排序
    lst.reverse() 翻转
    lst.sort(reverse=Ture) 降序
    字典dict dic.popitem() 随机删
    dic = dict.fromkeys( k , v ) 是一个类方法,用于创建新字典(通过第一个参数的迭代,与第二个参数组和成key:value),每一个value使用的是同一个内存地址
    元组tuple tu.count("查询的元素") 查询元素出现的次数
    tu.index("") 查找
  2. 数据类型转换

    字符串 -- 数字:字符串中必须都是十进制的数字

    数字 -- 字符串:直接转换

    列表 -- 字符串:''.join() -- 可迭代的对象中不能出现数字

    字符串 -- 列表:split

    除字典外,容器数据类型之间可以直接相互转换

  3. 数据类型小结

    int、str、bool、list、tuple、dict、set

    有序的有:int、str、bool、list、tuple

    无序的有:dict、set

    可变的有:list、dict、set

    不可变的有:int、str、bool、tuple

    访问方式:直接访问:int、bool、set

    ​ 顺序访问:str、list、tuple

    ​ 通过键访问:dict

二、常见的坑

  1. 循环删除索引的时候,要倒序删除 否则会报错,或者结果不正确

    索引值是奇数的删除
    li = [1,2,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)   #倒序删除  del li[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]
    del li[1::2]
    print(li)
    
  2. 循环添加列表元素的时候,会形成死循环

    li = [1,2,3,4]
    for i in li:
        li.append(i)
    print(li)
    
  3. 字典再循环的时候不能改变字典的大小

    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)
    

三、编码与解码

  1. 编码与解码(encode和decode)

​ unicode => utf-8

s = "刘伟很皮" # 12个字节
abc = s.encode("UTF-8")  # encode之后的结果是bytes类型  依然是原来的字符串
print(abc)

​ utf-8 => unicode

abc = b'\xe5\x88\x98\xe4\xbc\x9f\xe5\xbe\x88\xe7\x9a\xaf'
s = abc.decode("UTF-8") # 解码。 用什么编码, 就用什么解码
print(s)

​ 结论:用什么编码集编码, 就用什么编码集解码

posted @ 2019-06-12 16:23  小小蚂蚁mm  阅读(92)  评论(0编辑  收藏  举报