封装和解构
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. Java IO流及应用(一)

    IO流 IO流概述及FileWriter类的使用 FileReader类使用 缓冲流介绍和使用 IO流相关案例 NO.one IO流概述及FileWriter类使用 1.1 IO流概述及分类 IO流用 ...

  2. Vue的介绍及基础指令

    一.什么是Vue Vue.js是一个渐进式 JavaScript 框架 通过对框架的了解与运用程度,来决定其在整个项目中的应用范围,最终可以独立以框架方式完成整个web前端项目 为什么要学习Vue 三 ...

  3. 3rd,Python登录模拟

    需求: 1. 用户输入帐号密码进行登陆 2. 用户信息保存在文件内 3. 用户密码输入错误三次后锁定用户 #导入getpass库,用于密码验证 import getpass #定义用户名.密码 _us ...

  4. _pvp

    comment 备注 zone 区域ID,.gps第二个参数 area 地域ID,.gps第三个参数 type 区域类型(保持原状.安全区.自由PVP.自由PVP - 禁止组队.自定义阵营(_fact ...

  5. StringRedisTemplate常用API

    转载自网络: //向redis里存入数据和设置缓存时间stringRedisTemplate.opsForValue().set("test", "100",6 ...

  6. PHP设计模式概念

    设计模式(Design Pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案 设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案.面向对象 ...

  7. 《HTTP 权威指南》笔记:第十五章 实体与编码

     如果把 「HTTP 报文」想象为因特网货运系统的「箱子」,那么「HTTP 实体」就是报文中的实际的「货物」. 其中,实体又包含了「实体首部」 和 「实体主体」,实体首部用于描述各种参数,实体主体就 ...

  8. 斜率优化dp的总结

    放在了我的另一个博客上面 斜率优化dp的总结(多刷新几次才打得开)

  9. EOS使用

    公司要玩区块链,听说EOS交易快,就弄来玩玩.弄了一天终于编译成功了. Scanning dependencies of target nodeos [%] Building CXX object p ...

  10. day051 django第二天 django初识\代码

    模板渲染 JinJa2 from wsgiref.simple_sever import make_sever from jinjia2 import Template def index(): wi ...