封装和解构
1.封装
(1)将多个值使用逗号分割,组合在一起
(2)本质上,返回一个元祖,只是省掉了小括号
(3)python特有语法,被很多语言借鉴
举例:定义为元祖
>>> t1=(1,2) >>> type(t1) <class 'tuple'>
举例:将1和2封装成元祖
>>> t2=1,2 >>> type(t2) <class 'tuple'>
2.封装和解构
>>> a=4 >>> b=5 #封装 >>> c=a,b >>> c (4, 5) #解构 >>> b,a=c >>> b 4 >>> a 5
3.解构
(1)线性结构的元素解开,并顺序的赋给气他变量
(2)左边接纳的变量数要和右边解开的元素个数一致
举例:把列表里的两个值解构
>>> list=[3,5] >>> first,second = list >>> print(first,second) 3 5
举例:把字典里的两个值解构
>>> a,b={'a':10,'b':20} >>> a 'b' >>> b 'a'
举例:
>>> a,*b={10,20,30} >>> a 10 >>> b [20, 30]
举例:
>>> [a,b]=10,20 >>> a 10 >>> b 20
举例:
>>> (a,b)={30,40} >>> a 40 >>> b 30
4.python3的解构
(1)使用*变量名接收,但不能单独使用
(2)被*变量名收集后组成一个列表
举例:
>>> lst = list(range(1,51,2)) >>> lst [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]
举例:a取第一位,b去第二到倒数第二位,c取最后一位
>>> a,*b,c=lst >>> a 1 >>> b [3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47] >>> c 49
举例:*a尽可能的拿,b取最后一位
>>> *a,b=lst >>> a [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47] >>> b 49
举例:a取第一位,b取2到最后一位
>>> a,*b=lst >>> a 1 >>> b [3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]
举例:a取第一位,b去第二到倒数第二位列表类型,c取最后一位
>>> a,*b,c="abcdefghijklmn" >>> a 'a' >>> b ['b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm'] >>> c 'n' >>> type(b) <class 'list'>
5.练习
对列表[1,9,8,5,6,7,4,3,2]使用冒泡法排序,要求使用封装和结构来交互数据 交换排序 lst=[1,9,8,5,6,7,4,3,2] for i in range(9): #有几个数字循环几次,循环9次 for j in range(8-i): #循环0-7 if lst[j] > lst[j+1]: #1>9 #右边封装到左边依次解构 lst[j],lst[j+1]=lst[j+1],lst[j] #1,2= print(lst) 返回: [1, 2, 3, 4, 5, 6, 7, 8, 9]
丢弃变量
(1)这是一个惯例,是一个不成文的约定,不是标准
(2)如果不关心的一个变量,就可以定义改变量名字为_
(3)_是一个合法的标识符,也可以作为一个有效的变量使用,但是定义成下划线就是希望不要被使用,除非你明确的知道这个数据需要使用
>>> lst=[9,8,7,20] >>> first,*second=lst >>> a,*_,b=lst >>> print(a) 9 >>> print(b) 20
总结:
_这个变量本身无任何意义,没有任何可读性,所以不是用来给人使用的
python中很多库,都是用这个变量,使用十分广泛,请不要在不明确的变量作用域的情况下,使用_导致和库中_冲突
练习1:lst=list(range(10))这样一个列表,取出第二个,第四个,倒数第二个
>>> lst=list(range(10)) >>> _,a,_,b,*_,c,_=lst >>> a 1 >>> b 3 >>> c 8
练习2:从lst=[1,(2,3,4),5]中,提取4出来
>>> lst=[1,(2,3,4),5] >>> _,[*_,a],_=lst >>> a 4
练习3:环境变量JAVA_HOME=/USR/BIN,返回变量名和路径
>>> s='JAVA_HOME=/USR/BIN' >>> name,*_,paht=s.split('=') >>> name 'JAVA_HOME' >>> path '/USR/BIN'