封装和解构
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. New需谨慎

    New is Glue When you’re working in a strongly typed language like C# or Visual Basic, instantiating ...

  2. IdentityServer4 错误解决方案

    错误 解决方案 Grant types list cannot contain both xx and xx 以下授权类型不能同时存在: Implicit AuthorizationCode Impl ...

  3. Mysql中 in or exists not exists not in区别 (网络整理)

    in 和or区别: 如果in和or所在列有索引或者主键的话,or和in没啥差别,执行计划和执行时间都几乎一样. 如果in和or所在列没有 索引的话,性能差别就很大了.在没有索引的情况下,随着in或者o ...

  4. Jade入门学习笔记

    jade是超高性能的node JavaScript模板引擎,有着非常强大的API和大量杰出的特性.它主要针对node的服务端.由于商标的原因,改为Pug,哈巴狗.Pug有它本身的缺点--可移植性差,调 ...

  5. pandas 对象中 to_pickle 方法参数命名问题,不能用frame

    这句话一直报错,经过反复排查,是命名问题,to_pickle() 参数不能是 frame,换一个名字就可以了 frame.to_pickle('examples\local_frame_pickle' ...

  6. SQL Server 第三章 结构化查询语言

    SQL脚本: create database electric; use electric go create table Salvaging( prj_no int primary key, prj ...

  7. 温顾知新系列-JAVA网络编程系统(1)- 流

    一.字节流 1. 输出流 Java的基本输出流类是java.io.OutputStream; public abstract calss OutputStream 此类常用的写入数据的基本方法如下: ...

  8. Vue.js 基本功能了解一下~

    一.写在前面 隔了这么久才来出Vue的第二篇文章,真是堕落了,自己先惩罚下/(ㄒoㄒ)/~~ 回过头看自己第一篇相关文章<初试 Vue.js>(http://www.cnblogs.com ...

  9. css设置点击态样式

    .rightMenu:active { background-color: rgba(46, 103, 222, 0.13); }

  10. ORA-01034 报错

    问题描述: 执行任何DB语句都会有如下报错: Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.ERROR:ORA-0 ...