59、封装和解构

作者: BeautifulSoulpy | 来源:发表于2019-06-01 09:55 被阅读2次
去与世界连接;去工作,去社交,去创造,去与人打交道,去旅行,去折腾,去家庭之外获得足够的欢愉,去让更多的人听你说的话,
让你的声音,有更多的安身之所,去从他人他事他物上,获得丰盈的存在感,价值感;

如此一来,你就是一直在成长的人;

只有共同的成长,齐步前行,谁也不落后谁,谁也不输给谁,各自都有喝彩声,各自都有鲜花和荣耀,而方向又是相同的,这样的婚姻之路,才会尽可能的长久;

哪怕不长久,你也能继续有光芒,有选择的权力!      ———————易简读书
python封装与解构;python特有语法,被很多语言学习和借鉴;

1.将多个值使用逗号分割,组合在一起;
2.本质上,返回一个元祖,只是省略了小括号;
3.python特有的语法,被很多语言学习和借鉴;

1.封装
#封装的定义
a=1,2,23  #将右边的内容封装成元祖
type(a)    |    tuple

# python 封装默认使用元组tuple() 进行封装;元组空间占用小;
c=(1)     
type(c)     #int

c=(1,)   #元祖定义的方式;
type()

x,y=y,x ## 句中,等号右边是封装;左边就是使用了解构;
# 封装过程:先算等号右边,算完了;发现左边有多个值,再解构;拆开,依次对应;

2.解构:
1.把线性解构的元素解开,并顺序的付给其他变量;
2.左边接纳的变量数要和右边解开的元素个数一致;
3.非线性的解构也可以解构;(本质上来讲,但顺序是随机的)

# eg:
lst=[3,5]
first,second=lst  # 解构:两边的个数必须严格一致;
print(first,second)    |    3 5

总结:
封装:右边的值算好后封装在一起(默认为元组)
解构:右边的与左边的严格 一一对应 的过程;
3.线性结构(list tuple,str)、链表和非线性结构

1.链表(逻辑上是线性的,物理内存中的布局不是线性的,乱放的;但是,列表存贮解构是连续的,开辟的一段连续的内存空间)

x,y=list((2,3))
x,y #又进行了封装;

# 元组有序(可索引),不可变,小括号()表示,可以重复,只读(不能增删改)
## 对比 list:有序(可索引),可变,使用[]表示,元素可重复
### 字符串是不可变的,有序,使用引号(单双,单双三)
#### bytes是不可变的字节序列,bytearray是可变的字节序列
##### set叫集合,元素可变(元素需要可hash)、无序(无法索引,可以迭代)、不重复(去重??)
###### dict,k-v组合,可变,无序,key不能重复

a,b={'a':10,'b':20}
a,b    |      ('a', 'b')

a,*b={10,20,30}   #新玩法;   set集合属于非线性结构;
a,b ,type(b)      |    (10, [20, 30], list)

[a,b]=1,2    #先封装为一个tuple();
[a,b]=(1,2)  #解开了,对应上了;
a,b    |    (1, 2)

1. 非线性的不是按顺序对应的(假随机,有一定的规路);线性的是顺序排列的;
(a,b)={30,40}
a,b    |    (40, 30)

lst=list(range(1,11,2))
head,*mid,tail=lst
head,mid,tail      |      (1, [3, 5, 7], 9)

2. *xxx  ->list     *xxx的容器为列表结构;*xxx不能完全赋值列表(error);*会尽可能的吃;
*mid的 容器为列表结构;

lst=[1,2,3]
head,*mid,tail=lst   # *mid的 容器为列表结构;
mid         |        [2]

4. 丢弃变量(*-、-)

1._为一个合法标识符,也可以作为一个有效的变量使用,但是定义变量就是不希望再次被使用;

  1. Python中很多库,都是用这个变量,使用十分广泛;请不要在不明确变量作用域的情况下,导致和库中_冲突;
head, *-, tail  #记住*_   方便看懂源码;

lst=[9,8,7,20]
_,*_,tail=lst
print(_)      #变量的重复**赋值(解构)**
print(tail)
print(_)
----------------------------
[8, 7]
20
[8, 7]

练习
1:取出元素:列表中取出第二个,第四个,倒数第二个;

lst=list(range(10))
_,b,_,d,*_,s,_=lst
print(b,d,s)       |      1 3 8
--------------------------------

2:从lst=[1,(2,3,4),5]

lst=[1,(2,3,4),5]
_,(*_,val),_=lst   #线性结构一样姐可以提取出来;
_,[*_,val],_=lst  
print(val)    |    4

3.环境变量JAVA_HOME=/usr/bin,返回环境变量名称和路径;

str='JAVA_HOME=/usr/bin'
key,_,val=str.partition('=')
#单个字符和字符串的处理问题;
key,val          |          ('JAVA_HOME', '/usr/bin')

4.对list使用冒泡法排序,
#要求使用封装和解构来交互数据;


lst=[1,9,8,5,6,7,4,3,2]  
n=len(lst)
for j in range(n):
    for i in range(n-1-j):
        if lst[i]>lst[i+1]:
            #lst[i+1],lst[i]=lst[i],lst[i+1]
            lst[i+1],lst[i]=lst[i:i+2] #   使用封装和解构 交互数据;
            
print(lst)
------------------------------------
[1, 2, 3, 4, 5, 6, 7, 8, 9]


相关文章

  • 59、封装和解构

    python封装与解构;python特有语法,被很多语言学习和借鉴; 1.将多个值使用逗号分割,组合在一起;2.本...

  • Python_5_Python的封装与解构-集合

    1. 封装与解构1.1. 封装1.2. 解构1.3. Python3 的解构 2. set 类型2.1. set ...

  • python的封装与结构 - set集合

    1 封装与解构 封装与解构属于Python语言的一种特性,它使用起来很像其他语言中的"逗号表达式",但内部原理是不...

  • Python的封装与结构 - set集合

    1 封装与解构 封装与解构属于Python语言的一种特性,它使用起来很像其他语言中的"逗号表达式",但内部原理是不...

  • 11.4-IPython使用和封装解构

    想一件事就要立刻去做,不要想后果,也不要看结果,只体会其中做事的感觉,相信自己的感觉,不会错,每天在生活,工作中,...

  • Python封装与解构

    封装 将多个使用逗号分割的数据组合起来 本质上返回的是一个元祖类型 解构 将线性解构的元素解开,并顺序的赋值给右侧...

  • Python解构与封装

    提出问题 先看以下代码 代码的输出结果是:2 1 再看以下代码: 代码的输出结果是:2 1 x, y = y, x...

  • Python学习打call第十三天:容器类型数据结构的封装与解构

    今天要学习的是容器类型数据结构的封装与解构,重点学习一下解构,有好几种方法可以解构,一起看看吧~ 1.什么是容器类...

  • 封装和解构,丢弃变量

    一.封装 将多个值使用逗号分割,组合在一起 本质上,封装成一个元组,返回封装.gif 二.解构 把右边多个元素集合...

  • ES6系列 (六)解构

    目标 解构对象 解构数组 结合数组解构和对象解构 了解解构的类型 思考 解构对象 使用解构语句解构数据结构,提取n...

网友评论

    本文标题:59、封装和解构

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