首页 > Python之路 > python数据结构-封装解构

python数据结构-封装解构

封装和解构
    封装:
封装:
    将多个值使用逗号分隔,组合在一起
    本质上,返回一个元组,只是省掉了小括号
    python特有语法,被很多语言借用
举例:
t1 = (1,2)  #定义为元组
t2 = 1,2    #将1喝2封装成元组
type(t1)  #类型为元组
type(t2)   #类型为元组

    解构:
解构:
    把线性解构的元素解开,并顺序的赋给其它变量(非线性解构的也可以解构)
    左边接纳的变量数要和右边解开的元素个数一致
举例:
lst = [3,5]
first second = lst
print(first,second)  #结果为3,5

封装解构举例
封装解构举例:
a = 4
b = 5
temp = a
a = b
b = temp
等价于
a , b = b ,a   #等号右边使用了封装,左边使用了解构

python3的解构
python3的解构:
    使用*变量名接收,但不能单独使用
    被*变量名收集后组成一个列表
    列如:
    lst = list(range(1,101,2))
    head,*mind,tail = lst
    *body,tail = lst
    head,*tail = lst
    head,*mid,tail = 'dassssssssdasda'
    type(mid)

丢弃变量
丢弃变量:
    这是一个惯例,是一个不成文的规定,不是标准
    如果不关心一个变量,就可以定义改变量的名字为 :  '_'
    '_' 是一个合法的标识符,也可以作为一个有效的变量使用,但是定义成下划线就是希望不要使用,除非你明确的知道这个数据需要使用
    '_'是合法标识符,看到下划线就知道这个变量就是不想被使用
    列如:
    lst = [9,8,7,20]
    first,*second =lst
    head,*second = lst
    head,*_,tail = lst
    print(head)
    print(tail)
总结:
    ‘_’:这个变量本身无任何语义,没有任何可读性,所有不是用来给人使用的
    python中很多库,都使用这个变量,使用十分广泛,请不要在不明确变量作用域的情况下,使用'_'导致和库中的'_'冲突

练习
练习:
从lst = [1,(2,3,4),5]中,提取4出来
    _,(*_,f),_ = lst 
    print(f)    #结果为4
环境变量JAVA_HOME=/usr/bin,返回变量名和路径
    str1 = 'JAVA_HOME=/usr/bin'
    name,path = str1,split('=')
对列表[1,9,8,5,6,7,4,3,2]使用冒泡算法排序,要求使用封装解构来交互数据
lst1 = [1,9,8,5,6,7,4,3,2]
len1 = len(lst1)
for i in range(len1):
    flag = False
    for j in range(len1-i-1):
        if lst1[j] > lst1[j+1]:
            lst1[j],lst1[j+1] = lst1[j+1],lst1[j]
            flag = True
    if not flag:
        break
print(lst1)
总结:解构是python提供的很好的功能,可以方便提取复杂数据结构的值,配合'_'使用会更加便利
 

一定是先封装在解构,封装优先元组,解构优先列表,*b  ,*表示无数个

  •   正在提交中,请稍候...
      评论提交成功
    回复 的评论,点击取消回复。