zoukankan      html  css  js  c++  java
  • Python进阶小结

    一、异常

    万能捕捉异常公式

    try:
        # 逻辑代码
        1/0
    except Exception as e:
        print(e)
    
    

    division by zero

    二、深浅拷贝

    2.1 拷贝

    拷贝/浅拷贝/深拷贝都是针对可变类型数据而言的

    l1 = ['a','b','c',['d','e','f']]
    l2 = l1
    
    l1.append('g')
    
    print(l1)  # ['a','b','c',['d','e','f'],'g']
    print(l2)  # ['a','b','c',['d','e','f'],'g']
    

    如果l2是l1的拷贝对象,则l1内部的任何数据类型的元素变化,则l2内部的元素也会跟着改变,因为可变类型值变id不变

    2.2 浅拷贝

    import copy
    
    
    l1 = ['a','b','c',['d','e','f']]
    l2 = copy.copy(l1)
    
    l1.append('g')
    
    print(l1)  # ['a','b','c',['d','e','f'],'g']
    print(l2)  # ['a','b','c',['d','e','f']]
    
    l1[3].append('g')
    
    print(l1)  # ['a','b','c',['d','e','f','g'],'g']
    print(l2)  # ['a','b','c',['d','e','f','g']]
    

    如果l2是l1的浅拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,则l2会跟着改变

    2.3 深拷贝

    import copy 
    
    
    l1 = ['a','b','c',['d','e','f']]
    l2 = copy.deepcopy(l1)
    
    l1.append('g')
    
    print(l1)  # ['a','b','c',['d','e','f'],'g']
    print(l2)  # ['a','b','c',['d','e','f']]
    
    l1[3].append('g')
    
    print(l1)  # ['a','b','c',['d','e','f','g'],'g']
    print(l2)  # ['a','b','c',['d','e','f']]
    

    如果l2是l1的深拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,l2也不会变,即l2永远不会因为l1的变化而变化

    三、数据类型内置方法

    3.1 数字类型内置方法

    3.1.1 整型

    1. 作用:定义年龄/身高/体重/id号
    2. 定义方式:
    age = 18
    age = int('18') # 含有字符串不可以
    
    1. 方法: + - * / % // **
    2. 多个值or一个值:一个值
    3. 有序or无序:压根没有有序无序这一说
    4. 可变or不可变:不可变
    • 可变:值变id不变,
    • 可变:值变id也变

    3.1.2 浮点型

    1. 作用:定义薪资/价格
    2. 定义方式:
    salary = 3.2
    
    salary = float('3.2')
    
    1. 方法:+ - * / % // **
    2. 多个值or一个值:一个值
    3. 有序or无序:压根没有有序无序这一说
    4. 可变or不可变:不可变

    3.2 字符串类型内置方法

    1. 作用:姓名/
    2. 定义方式:
    name = 'randy'
    name = "randy"
    name = '''
    randy
    randy
    '''
    name = """
    randy
    randy
    """
    name = "'randy'"
    name = '"randy"'
    
    1. 方法
      1. 优先掌握
        1. 索引取值
        2. 切片
        3. 长度
        4. 切分split
        5. 除两边空白strip
        6. 成员运算in;not in
        7. for循环
      2. 需要掌握
        1. lstrip/rstrip:左/右除空白
        2. rsplit:从右开始切割
        3. upper/lower:大写/小写
        4. startstwith/endswith:以某开头/以某结尾
        5. join:连接列表为字符串
        6. replace:替换字符
        7. isdigit:判断是否为数字
      3. 了解
        1. find/rfind/index/rindex/count:查找/从右开始查找/索引结果/从右开始索引结果/计数
        2. center/ljust/rjust/zfill:居中填充/居左填充/居右填充/填充0
        3. expantabs:扩展tab键
        4. capitalize/swapcase/title:大写/大小写转换/首字母大写
        5. is系列:略
    2. 多个值or一个值:一个值
    3. 有序or无序:有序
    4. 可变or不可变:不可变

    3.3 列表类型内置方法

    1. 作用:多个女朋友/
    2. 定义方式:[]内用逗号隔开多个任意数据类型的元素
    friends_list = ['longzeluola','canglaoshi','qiaobenai','randy']
    lis = list('abcd')
    
    1. 方法:
      1. 优先掌握
        1. 索引取值(即可取又可改)
        2. 切片
        3. 长度
        4. append
        5. 成员运算
        6. for循环
      2. 需要掌握
        1. count:元素个数计数
        2. remove:移除元素
        3. reverse:反转列表
        4. pop:删除元素
        5. insert:插入元素
        6. sort:列表排序
        7. index:索引元素
        8. del:删除元素
        9. extend:扩展列表
        10. clear:清除列表
    2. 多个值or一个值:多个值
    3. 有序or无序:有序
    4. 可变or不可变:可变

    3.4 元祖类型内置方法

    1. 作用:类似于列表,可以取不可以存
    2. 定义方式:
    friends_tuple = ('longzeluola','canglaoshi','qiaobenai','randy')
    tup = tuple('abcd')
    
    1. 方法
      1. 优先掌握
        1. 索引取值(无法更改)
        2. 切片
        3. 长度
        4. 成员运算
        5. for循环
        6. count:元素个数计数
        7. index:元素位置索引
    2. 多个值or一个值:多个值
    3. 有序or无序:有序
    4. 可变or不可变:不可变

    3.5 字典类型内置方法#

    1. 作用:值太多列表存容易,取麻烦时使用字典
    2. 定义方式:
    randy_info_dict = {
    'name':'randy',
    'height':180,
    'weight':140,
    'hobby_list':['read','run','music','fishing','programming','coding','debugging']
    }
    
    for k,v in nick_info_dict.items():
        print(k,v)
    
    1. 方法
      1. 优先掌握
        1. 按键取值
        2. 长度
        3. keys/values/items
        4. for循环
        5. 成员运算
      2. 需要掌握
        1. pop:删除元素
        2. fromkeys:由一个列表生成一个字典,默认值为None
        3. setdefault:有指定key不会改变值;无指定key则改变值
        4. get:通过key获取value,无key默认获取None
        5. update:扩展字典,重复则覆盖
        6. del:删除字典键值对
    2. 多个值or一个值:多个值
    3. 有序or无序:无序
    4. 可变or不可变:可变

    3.6 集合类型内置方法

    1. 作用:存多个值,为了集合之间做运算
    2. 定义方式:
    s = set()
    
    s = {1,2,3,4,5,1}
    
    1. 方法:
      1. 优先掌握
        1. 去重
        2. 并集 |
        3. 交集 &
        4. 差集 -
        5. 对称差集 ^
        6. 父集 >;>=
        7. 子集 <&emsp;<=
        8. ==
      2. 需要掌握
        1. add:添加元素
        2. difference_update:更新该集合没有的元素
        3. isdisjoint:如果两个元素交集为空返回True,否则返回False
        4. remove:移除元素 # 值不存在会报错
        5. discard :移除元素 # 不会报错
    2. 多个值or一个值:多个值
    3. 有序or无序:无序
    4. 可变or不可变:可变

    3.7 布尔类型

    1.作用:一般用于判断,除了0/None/空/False自带布尔值为False,其他的数据类型自带布尔值为True

    四、数据类型分类

    4.1 按值个数

    一个值 多个值
    整型/浮点型/字符串 列表/元祖/字典/集合/

    4.2 按有序无

    有序 无序
    字符串/列表/元祖 字典/集合

    4.3 按可变不可变

    可变 不可变
    列表/字典/集合 整型/浮点型/字符串
    在当下的阶段,必将由程序员来主导,甚至比以往更甚。
  • 相关阅读:
    [kuangbin带你飞]专题十二 基础DP1 E
    hdu 1203 I NEED A OFFER! (01背包)
    hdu 2602 Bone Collector (01背包)
    hdu 4513 吉哥系列故事——完美队形II (manacher)
    hdu 2203 亲和串 (KMP)
    hdu 1686 Oulipo (KMP)
    hdu 1251 统计难题 (字典树)
    hdu 2846 Repository (字典树)
    hdu 1711 Number Sequence (KMP)
    poj 3461 Oulipo(KMP)
  • 原文地址:https://www.cnblogs.com/randysun/p/12238188.html
Copyright © 2011-2022 走看看