• [PY3]——内置数据结构(8)——解构与封装


    ### 解构的理解与用法 ###

    解构是python很有特色的一个功能,被很多语言借鉴(例如ES6)

    # 元素按照顺序赋值给变量
    In [31]: lst=list(range(5))
    In [32]: head,*mid,tail=lst 
    In [33]: print(head,tail)
    0 4
    In [34]: print(mid)
    [1, 2, 3]
    
    # 变量和元素个数必须匹配
    In [36]: v1,v2,v3,v4,v5,v6=lst
    ValueError: not enough values to unpack (expected 6, got 5)
    
    # *表示可以接受任意个数的元素
    # 但*变量不能单独出现
    In [35]: *v=lst
    SyntaxError: starred assignment target must be in a list or tuple
    # 也不能重复出现
    In [40]: head,*m1,*m2,tail=list(range(5)) ^
    SyntaxError: two starred expressions in assignment
    # 带*的这个变量的输出是一个列表
    In [37]: head,*mid,tail=1,2
    In [38]: print(head,tail)
    1 2
    In [39]: print(mid)
    []
    
    # 解构是支持多层次的
    In [14]: lst=[1,(2,3),5]
    In [15]: _,(_,val),*_=lst
    In [16]: print(val)
    3
    In [17]: _,[*_,val],*_=lst
    In [18]: print(val)
    3

    ### 一个惯例,下划线‘_’ ###

    # python有一个惯例,是使用单个下划线“_”来表示丢弃该变量
    
    In [42]: head,*_,tail=lst
    In [7]: v1,_,v3,*_,vd,_=lst

    ### 解构的使用场景 ###

    1. 解析配置文件

    In [20]: key,_,value='env=PATH=/usr/bin:$PATH'.partition('=')
    
    In [21]: print(key);print(value)
    env
    PATH=/usr/bin:$PATH

    2. 非常复杂的数据结构,多层嵌套的线性结构的时候,可以用解构快速提取其中的值

    3. 函数返回值

    ### 封装 ###
    封装:相当于定义一个元组时省略小括号

    In [18]: t1=1,2;t2=(1,2)
    
    In [20]: type(t1)
    Out[20]: tuple
    
    In [21]: type(t2)
    Out[21]: tuple      //t1和t2等效
    # 可用于快速交换两个变量的值
    In [1]: x=1;y=2
    
    In [3]: x,y=y,x   //左边解构,右边封装
    
    In [4]: print(x,y)
    2 1
  • 相关阅读:
    一看就懂的Mybatis框架入门笔记
    一文了解有趣的位运算(&、|、^、~、>>、<<)
    探究如何永久更改Maven的Dynamic Web Project版本及pom.xml默认配置
    编译流程之仿真
    数字逻辑基础2
    1. FPGA内部的逻辑资源
    c++ 入门之深入探讨拷贝函数和内存分配
    c++入门之浅拷贝和深拷贝
    c++入门之详细探讨类的一些行为
    c++入门之类与内存
  • 原文地址:https://www.cnblogs.com/snsdzjlz320/p/6671983.html
Copyright © 2020-2023  润新知