zoukankan      html  css  js  c++  java
  • Python基础学习笔记(07)基础类型操作及转化、编码

    Python基础学习(07)

    一、今日内容大纲

    • 基础数据类型的补充
    • 数据类型之间的转换
    • 编码的进阶

    二、基础数据类型的补充

    1. str 操作的补充

      • capitalize 函数:首字母大写

        print(s1.capitalize())                              # result: Raigor
        
      • swapcase 函数:大小写反转

        print(s1.swapcase())                                # result: rAIgOR
        
      • title 函数:每个单词的首字母大写(非字母隔开的字母算作一个单词)

        msg = 'i love1yOU'
        print(msg.title())                                  # result: I Love1You
        
      • center 函数:居中

        print(s1.center(20,'*'))                            # 设置*为填充字符,总长度20
        print(s1.center(20))                                # 未设置填充字符,总长度20
        # result:
        # *******RaiGor*******
        #        RaiGor
        
      • find 函数:通过元素寻找索引,找到第一个就返回字符位置,找不到返回-1

        s1 = 'iseedeadpeople'
        print(s1.find('i'),s1.find('z'),s1.find('e'))       # result: 0 -1 2
        
      • index 函数:通过字符串寻找索引,返回第一个字符的位置,找不到会报错,可规定开始位置

        s1 = 'iseedeadpeople'
        print(s1.index('see'))                              # result: 1
        print(s1.index('see',2))                            # result: ValueError: substring not found
        
    2. tuple 操作的补充

      • 元组中如果只有一个元素且没有逗号,那么他不是元组,它与括号内的元素数据类型相同

        tu1 = (1)
        tu2 = (1,)
        tu3 = ([1,2,3])
        tu4 = ('string')
        print(tu1, type(tu1))                   			# result: 1 <class 'int'>
        print(tu2, type(tu2))                   			# result: (1,) <class 'tuple'>
        print(tu3, type(tu3))                   			# result: [1, 2, 3] <class 'list'>
        print(tu4, type(tu4))                   			# result: string <class 'str'>
        
      • index 函数:通过元素寻找索引,找到第一个位置返回(未找到会报错)

        tu = (1,2,2,2,2,3,4)
        print(tu.index(5))                      			# result: ValueError: tuple.index(x): x not in tuple
        
      • count 函数:获取某元素在列表中出现的次数

        tu = (1,2,2,2,2,3,4)
        print(tu.count(2))                     				 # result: 4
        
    3. list 操作的补充

      • count 函数、index 函数:操作同上

      • sort 函数:对源列表进行排序(默认从小到大)

        l1 = [5, 4, 3, 7, 8, 6, 1, 9]
        l1.sort()                               			# 默认从小到大排序
        print(l1)                               			# result: [1, 3, 4, 5, 6, 7, 8, 9]
        l1.sort(reverse = True)                 			# 添加reverse = True实现从大到小排序
        print(l1)                               			# result: [9, 8, 7, 6, 5, 4, 3, 1]
        
      • reverse 函数:对源列表将进行翻转操作

        l1 = [5, 4, 3, 7, 8, 6, 1, 9]
        l1.reverse()
        print(l1)                               			# result: [9, 1, 6, 8, 7, 3, 4, 5]
        
      • 列表可以进行相加、数乘等操作(3.4 以上版本支持)

        l1 = [1, 2, 3]
        l2 = ['A', 'B']
        print(l1 + l2)                          			# result: [1, 2, 3, 'A', 'B']
        print(l1 * 2)                          				# result: [1, 2, 3, 1, 2, 3]
        
      • 典型例题:

        l1 = [11, 22, 33, 44, 55]							# 将索引为奇数的元素删除
        
        # 方法一:笨(可以思维置换直接取偶数加入新列表中)
        temp_li = []
        for i in range(len(l1)):
            if i % 2 == 1:
                temp_li.append(l1[i])
        for i in temp_li:
            if i in l1:
                l1.remove(i)
        print(l1)
        
        # 方法二:最简单
        del l1[1::2]
        print(l1)
        
        # 方法三:倒序删除
        for i in range(len(l1) - 1, -1, -1):
            if i % 2 == 1:
                l1.pop(i)
        print(l1)
        
    4. dict 操作的补充

      • popitem 函数:3.5 版本之前是随机删除,3.6 版本以后是删除最后一个元素,有返回值(基本用不到)

      • update 函数:可以修改、增加键值对

        dic = {'name': 'Raigor', 'age': 18}
        dic.update(hobby='运动',height='175')                # 可以增加新的键值对
        dic.update(age=100)                                  # 可以修改原有键值对
        dic.update(((1,'a'),('name','0'),('hobby',0)))       # 另一种批量更新键值对方式(外面括号tuple和list都可以)
        print(dic)
        # result: {'name': '0', 'age': 100, 'hobby': 0, 'height': '175', 1: 'a'}
        
        dic1 = {1 : 1}
        dic2 = {1 : 2}
        dic1.update(dic2)                                    # update 甚至可以利用另一个字典更新原有字典
        print(dic1)                                          # result: {1: 2}
        
      • fromkeys 函数:将可迭代对象共用一个值

        dic = dict.fromkeys('abc', 100)
        print(dic)                                           # result: {'a': 100, 'b': 100, 'c': 100}
        

        另有一基于fromkeys 的练习题:

        dic = dict.fromkeys([1,2,3],[])
        dic[1].append(666)                                   # 公用一个值!
        print(dic)                                           # result: {1: [666], 2: [666], 3: [666]}
        
      • 典型例题:

        dic = {'k1': '太白', 'k2': 'barry', 'k3': '拜拜', 'age': 18}
        # 将字典中键含有'k'元素的键值对删除
        
        # 方法一:
        temp_dic = {}
        for key in dic.keys():
            if not 'k' in key:
                temp_dic.setdefault(key, dic[key])
        dic = temp_dic
        # print(dic)
        
        # 方法二:(有疑问!!!!)                 			   # 字典不可迭代过程中改变长度
        dic_keys = list(dic.keys())
        for key in dic_keys:
            if 'k' in key:
                dic.pop(key)
        print(dic)
        

    三、数据类型的转换

    1. bool 的转换

      • 下列值都可以转换为bool 数据类型的False:

        '', 0, (), {}, [], set(), None
        
      • 其余的值转化为bool 数据类型都为True

    2. 基础数据类型的存储空间占用(从低到高)

      # int(float)
      # str
      # set:无序,即无序存索引相关信息
      # tuple:有序,需要存储索引相关信息,不可变
      # list:有序,需要存储索引相关信息,可变,需要处理数据的增删改
      # dict:有序,需要存储key和value映射的相关信息,可变,需要处理数据的增删改(3.6 之后有序)
      

    四、编码的进阶

    • 数据在内存中全部是以Unicode编码的,但是当你的数据用于网络传输或者存储到硬盘中,必须是以非Unicode编码(UTF-8, GBK 等等),故在读取、存储等操作中,都存在编码之间的相互转换,故在计算机中存在唯一非Unicode 编码的特殊数据类型bytes,用来充当存储、读取操作与内存数据之间的媒介:

      content = 'hello'											# bytes:特殊的非Unicode数据类型,它的基本用法与str基本一致
      b = b'hello'
      print(b,type(b))                    						# result: b'hello' <class 'bytes'>
      print(b.upper(),type(b.upper()))    						# result: b'HELLO' <class '   bytes'>
      
      s1 = '中国'
      b = s1.encode('utf-8')               						# 编码 str -> bytes
      s = b.decode('utf-8')                						# 解码 bytes -> str
      print(b,s) 													# result: b'xe4xb8xadxe5x9bxbd' 中国
      
    • 不同非 Unicode 之间编码方式的转化:以 gbk 转为 utf-8 为例

      # gbk -> utf-8
      b1 = b'xd6xd0xb9xfa'
      s = b1.decode('gbk')
      u = s.encode('utf-8')
      print(u)                              						# result: b'xe4xb8xadxe5x9bxbd'
      
  • 相关阅读:
    flask 第三方组件
    Flask基础与进阶
    odoo10 视图
    odoo10 ORM操作
    odoo10基础
    字典的setdefault方法
    redis常用操作
    git常用命令与操作
    vue_axios
    odoo 权限设置
  • 原文地址:https://www.cnblogs.com/raygor/p/13236918.html
Copyright © 2011-2022 走看看