### 解构的理解与用法 ###

解构是python很有特色的一个功能,被很多语言借鉴(例如ES6)

# 元素按照顺序赋值给变量
In [31]: lst=list(range(5))
In [32]: head,*mid,tail=lst
In [33]: print(head,tail)
0 4
In [34]: print(mid)
[1, 2, 3] # 变量和元素个数必须匹配
In [36]: v1,v2,v3,v4,v5,v6=lst
ValueError: not enough values to unpack (expected 6, got 5) # *表示可以接受任意个数的元素
# 但*变量不能单独出现
In [35]: *v=lst
SyntaxError: starred assignment target must be in a list or tuple
# 也不能重复出现
In [40]: head,*m1,*m2,tail=list(range(5)) ^
SyntaxError: two starred expressions in assignment
# 带*的这个变量的输出是一个列表
In [37]: head,*mid,tail=1,2
In [38]: print(head,tail)
1 2
In [39]: print(mid)
[] # 解构是支持多层次的
In [14]: lst=[1,(2,3),5]
In [15]: _,(_,val),*_=lst
In [16]: print(val)
3
In [17]: _,[*_,val],*_=lst
In [18]: print(val)
3

### 一个惯例,下划线‘_’ ###

# python有一个惯例,是使用单个下划线“_”来表示丢弃该变量

In [42]: head,*_,tail=lst
In [7]: v1,_,v3,*_,vd,_=lst

### 解构的使用场景 ###

1. 解析配置文件

In [20]: key,_,value='env=PATH=/usr/bin:$PATH'.partition('=')

In [21]: print(key);print(value)
env
PATH=/usr/bin:$PATH

2. 非常复杂的数据结构,多层嵌套的线性结构的时候,可以用解构快速提取其中的值

3. 函数返回值

### 封装 ###
封装:相当于定义一个元组时省略小括号

In [18]: t1=1,2;t2=(1,2)

In [20]: type(t1)
Out[20]: tuple In [21]: type(t2)
Out[21]: tuple //t1和t2等效
# 可用于快速交换两个变量的值
In [1]: x=1;y=2 In [3]: x,y=y,x //左边解构,右边封装 In [4]: print(x,y)
2 1

[PY3]——内置数据结构(8)——解构与封装的更多相关文章

  1. [PY3]——内置数据结构(7)——字典及其常用操作

    字典及其常用操作Xmind图 关于字典 字典是一种key-value结构 字典是无序的 字典的定义 # {}大括号可以直接定义一个空字典 In [1]: d={};type(d) Out[1]: di ...

  2. [PY3]——内置数据结构(6)——集合及其常用操作

    集合及其常用操作Xmind图          集合的定义 # set( ) # {0,1,2} //注意不能用空的大括号来定义集合 # set(可迭代对象) In [1]: s=set();type ...

  3. [PY3]——内置数据结构(5)——字符串编码

    py2和py3中关于字符串的最大区别? python2中只有 unicode类型 而python3中有 string bytes两种类型 关于string和bytes的区分? 1.str是文本序列.b ...

  4. [PY3]——内置数据结构(9)——线性结构与切片/命名切片slice()

    线性结构的总结 列表list  元组tuple  字符串str  bytes  bytearray的共同点: 都是顺序存储.顺序访问的: 都是可迭代对象: 都可以通过索引访问 线性结构的特征: 可迭代 ...

  5. [PY3]——内置数据结构(1)——列表及其常用操作

    列表及其常用操作_xmind图         about列表 列表是一个序列,用于顺序存储数据 列表分为两种:ArrayList(用数组实现).LinkedList(用链表实现) 定义与初始化 #l ...

  6. [PY3]——内置数据结构(2)——元组及其常用操作

    定义和初始化 #tuple() 使用工厂函数tuple定义一个空元组 #() 使用圆括号定义一个空元组 #(1,2,3) 使用圆括号定义有初始值的元组 #tuple(可迭代对象) 把可迭代对象转换为一 ...

  7. [PY3]——内置数据结构(3)——字符串及其常用操作

    字符串及其常用操作xmind图 字符串的定义 1. 单引号/双引号 In [1]: s1='hello world' In [2]: s1="hello world" 2. 三对单 ...

  8. [PY3]——内置数据结构(4)——字符串格式化(format)

    字符串格式化是拼接字符串的一种手段 join和+拼接字符串的方法,难以控制格式 printf style 字符串格式化 这种方法是从c语言继承过来的 # 待格式化的字符串:一个字符串存在占位符 In ...

  9. 【Redis源代码剖析】 - Redis内置数据结构之压缩字典zipmap

    原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/51111230 今天为大家带来Redis中zipmap数据结构的分析,该结构定义在 ...

随机推荐

  1. 在ie6下将png24图片透明

    没想到IETester中IE6和IE6真实版本不一样...之前一直没有实现png图片的透明度,现在发现原来是版本不一样惹的祸.总之,我将解决方法以demo的方式显示出来,以供再次利用. <!DO ...

  2. 腾讯云/阿里云/微软云安装ISO镜像系统方法

    如今云服务的盛行,我们的开发和应用中场景应用也层出不穷,有时我们需要安装自由的镜像却越来越难,甚至有些云出于安全原因自己用户安装自由镜像,那么今天将带给大家安装自有镜像的方法. 前提条件:你的现有服务 ...

  3. Logstash 收集 IIS 日志

    日志样例 查看 IIS 日志配置,选择格式为 W3C(默认字段设置)保存生效. 2016-02-25 01:27:04 112.74.74.124 GET /goods/list/0/1.html - ...

  4. python的数据结构分类,以及数字的处理函数,类型判断

    python的数据结构分类: 数值型 int:python3中都是长整形,没有大小限制,受限内存区域的大小 float:只有双精度型 complex:实数和虚数部分都是浮点型,1+1.2J bool: ...

  5. 不用split调转字符串

  6. openstack中安装包与组件

    keystone openstack-keystone:验证服务,openstack 中的所有组件的验证以及用户验证,权限,目录等服务. python-openstackclient:命令行,安装以后 ...

  7. HTTP请求处理流程-SpringMvc

    1.在SpringMVC的http请求处理过程中,包括了前端控制器(DispatcherServlet).处理映射器(HandlerMapping).处理适配器(HandlerAdapter).处理器 ...

  8. ListView-电影列表

    import React, { Component } from 'react';import { Platform, StyleSheet, Text, View, ListView } from ...

  9. HihoCoder - 1513 bitset处理五维偏序

    题意:给出\(n<3e4\)个有序组\((a,b,c,d,e)\),求对第\(i\)个有序组有多少个\(j\)满足\((a_j<a_i,b_j<b_i,c_j<c_i,d_j& ...

  10. Python爬虫常用之登录(二) 浏览器模拟登录

    浏览器模拟登录的主要技术点在于: 1.如何使用python的浏览器操作工具selenium 2.简单看一下网页,找到帐号密码对应的框框,要知道python开启的浏览器如何定位到这些 一.使用selen ...