美文网首页
Python 内置数据结构之六(封装解构)

Python 内置数据结构之六(封装解构)

作者: Alexander_Zz | 来源:发表于2020-02-14 23:46 被阅读0次

    一、封装和解构

    1.1 封装
    • 将多个值使用逗号分割,组合在一起
    • 本质上,返回一个元祖,只是省掉了小括号
    • Python 特有语法,被很多语言学习和借鉴
    t1 = (1,2)   # 定义为元祖
    t2 = 1,2   # 将 1 和 2 封装成元祖
    print(type(t1))
    print(type(t2))
    
    封装示例.png
    1.2 举例
    a = 4
    b = 5
    temp = a
    a = b
    b = temp
    等价于
    a, b = b, a
    上句中,等号右边使用了封装,而左边使用了解构
    
    示例.png

    二、解构

    2.1 把线性结构的元素解开,并顺序的赋值给其它变量
    2.2 左边接纳的变量数要和右边解开的元素个数一致
    2.3 举例
    # 示例一
    lst = [3,5]
    first, second = lst
    print(first,second)
    
    # 示例二
    a,b = 1,2
    a,b = (1,2)
    a,b = [1,2]
    a,b = [10,20]
    a,b = {10,20}
    a,b = {'a':10,'b':20}   # 非线性结构亦可解构
    a,b = {10,20,30}
    a,*b = {10,20,30}
    [a,b] = (1,2)
    [a,b] = 10,20
    (a,b) = {30,40}
    
    示例一.png
    示例二.png

    三、Python 3 的解构

    3.1 使用 *变量名 接收,但不能单独使用
    3.2 被 *变量名 收集后组成一个列表
    3.3 举例
    lst = list(range(1, 101, 2))
    head, *mid, tail =lst
    *lst2 = lst
    *body, tail = lst
    head, *tail = lst
    head, *m1, *m2, tail = lst
    head, *mid, tail = "abcdefghijklmn"
    type(mid)
    
    示例.png

    四、丢弃变量

    4.1 这是一个惯例,是一个不成文的约定,不是标准
    4.2 如果不关心一个变量,就可以定义改变量的名字为 _
    4.3 _ 是一个合法的标识符,也可以作为一个有效的变量使用,但是定义成下划线就是希望不要被使用,除非你明确的知道这个数据需要使用
    4.4 举例
    • 示例一
    lst = [9,8,7,20]
    first, *second = lst
    head, *_, tail = lst
    print(head)
    print(tail)
    # _ 是合法的标识符,看到下划线就知道这个变量就是不想被使用
    print(_)
    
    示例一.png
    • 示例二
    lst = [9,8,7,20]
    first, *second = lst
    _, *_, tail = lst
    print(_)
    print(tail)
    print(_)
    
    示例二.png
    4.5 总结
    • _ 这个变量本身无任何语义,没有任何可读性,所以不是用来给人使用的
    • Python 中很多库,都使用这个变量,使用十分广泛。请不要在不明确变量作用域的情况下,使用 _ 导致和库中 _ 冲突
    4.6 练习
    • lst = list(range(10)) 这样一个列表,取出第二个,第四个,倒数第二个


      练习.png
    • 从 lst = [1,(2,3,4),5] 中,提取 4 出来


      练习.png
    • 环境变量 JAVA_HOME=/usr/bin,返回变量名和路径


      练习.png
    • 对列表 [1,9,8,5,6,7,4,3,2] 使用冒泡法排序,要求使用封装和解构来交互数据


      练习.png

    相关文章

      网友评论

          本文标题:Python 内置数据结构之六(封装解构)

          本文链接:https://www.haomeiwen.com/subject/gmqjfhtx.html