封装和解构
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'

3.python集合的更多相关文章

  1. Python 集合set添加删除、交集、并集、集合操作符号

    在Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 1. ...

  2. [转]python集合set

    Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 来源网 ...

  3. python集合使用范例的代码

    在代码过程中中,将代码过程中比较好的代码段珍藏起来,如下的代码是关于python集合使用范例的代码,希望能对大伙有用. # sets are unordered collections of uniq ...

  4. python集合与字典的用法

    python集合与字典的用法 集合: 1.增加  add 2.删除   •del 删除集合 •discard(常用)删除集合中的元素  #删除一个不存在的元素不会报错 •remove 删除一个不存在的 ...

  5. Python 集合内置函数大全(非常全!)

    Python集合内置函数操作大全 集合(s).方法名 等价符号 方法说明 s.issubset(t) s <= t 子集测试(允许不严格意义上的子集):s 中所有的元素都是 t 的成员   s ...

  6. Python 集合set()添加删除、交集、并集、集合操作详解

    集合:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次.每个元素的地位都是相同的,元素之间是无序的. 创建集合set python set类是在python的sets模块中,大家现在使 ...

  7. python集合可以进行相减

    python集合可以进行相减 student = {'tom','jim','mary','tom','jack','rose'} print(student) print('rose' in stu ...

  8. Python集合类型的操作与应用

    Python集合类型的操作与应用 一.Python集合类型 Python中的集合类型是一个包含0个或多个数据项的无序的.不重复的数据组合,其中,元素类型只能是固定数据类型,如整数.浮点数.字符串.元组 ...

  9. Python - 集合 - 第十一天

    Python 集合 集合(set)是一个无序的不重复元素序列. 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建 ...

  10. python集合set,交集,并集,差集,对称差集,子集和超集

    python集合set,交集,并集,差集,对称差集,子集和超集 x = {1, 2, 3, 4} y = {2, 4, 5, 6} # 交集(取x中与y中相同部分) print(x.intersect ...

随机推荐

  1. 【问题解决:启动卡死】Eclipse启动卡死的解决办法

    问题描述 Eclipse启动后卡死 问题分析 由于上一次没有正确关闭,导致在启动的时候开始 问题解决 方法1(推荐): 到<workspace>\.metadata\.plugins\or ...

  2. Machine Learning--week2 多元线性回归、梯度下降改进、特征缩放、均值归一化、多项式回归、正规方程与设计矩阵

    对于multiple features 的问题(设有n个feature),hypothesis 应该改写成 \[ \mathit{h} _{\theta}(x) = \theta_{0} + \the ...

  3. LINQ之路16:LINQ Operators之集合运算符、Zip操作符、转换方法、生成器方法

    本篇将是关于LINQ Operators的最后一篇,包括:集合运算符(Set Operators).Zip操作符.转换方法(Conversion Methods).生成器方法(Generation M ...

  4. variable 'o' used without having been completely initialized Compiling Vertex program

    variable 'o' used without having been completely initialized Compiling Vertex program   v2f vert (ap ...

  5. 【异常】idea执行Main方法出现 Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest

    一.异常复现步骤 1)首先得是一个Spring MVC项目 注:Spring Boot项目有内置的web 容器,不会出现该问题 2)main方法存在于使用HttpServletRequest类的类中 ...

  6. Windows Server 2012 R2域控制器部署

    1. 概述 该文档描述了在Windows 2012R2 系统上搭建域控的方式. 2. 具体步骤 2.1 首先我们先配置好IP地址.计算名(默认的计算机名比较长,后期其它计算机加入域控的时候需要输入比较 ...

  7. React文档(九)list和key

    首先,我们回顾一下在js里如何转换数组. 给出下面的代码,我们使用map()函数来获取一个数组的numbers然后将值变成两倍大.我们分配新数组由map()返回: const numbers = [1 ...

  8. mysql 5.7版本的安装(非解压版)

    这次的开发项目数据库方面要用到mysql,为了更好的学习,就在本地安装了一个mysql 一:下载安装步骤: https://blog.csdn.net/qq_34952973/article/deta ...

  9. AIX中PV,VG,LV及FS常用相关命令

    1.PV常用相关命令 1)lsdev:列出ODM(Object Data Manager)中的设备. 2)chdev:修改一个AIX设备的属性. 3)mkdev:创建一个AIX设备. 4)chpv:修 ...

  10. 【转】阿里云免费SSL证书申请与安装使用(IIS7)

    阅读目录 准备: 第一步:免费SSL证书申请 第二步:证书导入 第三步:分配服务器证书 最后一步:访问测试 回到顶部 准备: 阿里云已完成备案的域名一个 回到顶部 第一步:免费SSL证书申请 登陆阿里 ...