去与世界连接;去工作,去社交,去创造,去与人打交道,去旅行,去折腾,去家庭之外获得足够的欢愉,去让更多的人听你说的话,
让你的声音,有更多的安身之所,去从他人他事他物上,获得丰盈的存在感,价值感;
如此一来,你就是一直在成长的人;
只有共同的成长,齐步前行,谁也不落后谁,谁也不输给谁,各自都有喝彩声,各自都有鲜花和荣耀,而方向又是相同的,这样的婚姻之路,才会尽可能的长久;
哪怕不长久,你也能继续有光芒,有选择的权力! ———————易简读书
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._为一个合法标识符,也可以作为一个有效的变量使用,但是定义变量就是不希望再次被使用;
- 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]
网友评论