Python全栈-magedu-2018-笔记9
第三章 - Python 内置数据结构
封装和解构
- 封装
- 将多个值使用逗号分割,组合在一起
- 本质上,返回一个元组,只是省掉了小括号
- python特有语法,被很多语言学习和借鉴
t1 = (1,2) # 定义为元组
t2 = 1,2 # 将1和2封装成元组,一般都这么写
type(t1)
type(t2)
封装和解构
- 举例
a = 4
b = 5
temp = a
a = b
b = temp
等价于
a, b = b, a
上句中,等号右边使用了封装,而左边就使用了解构
解构
- 把线性结构的元素解开,并顺序的赋给其它变量
左边接纳的变量数要和右边解开的元素个数一致
举例
lst = [3, 5]
first, second = lst
print(first, second)
解构
a,b = 1,2
a,b = (1,2)
a,b = [1,2]
a,b = [10,20]
a,b = {10,20}
a,b = {'a':10,'b':20} # 非线性结构也可以解构,a为a是key值,b为b
a,b = {10,20,30}
a,*b = {10,20,30} # a为1,b为[20,30],*是匹配任意多个元素,因为解构时元素不确定,所以用列表
[a,b] = (1,2)
[a,b] = 10,20
(a,b) = {30,40}
Python3的解构
- 使用 *变量名 接收,但不能单独使用
- 被 *变量名 收集后组成一个列表
- 举例
lst = list(range(1, 101, 2))
head, *mid, tail = lst
*lst2 = lst
*body, tail = lst
head, *tail = lst
head, *m1, *m2, tail = lst
head, *mid, tail = "abcdefghijklmn"
type(mid)
丢弃变量
- 这是一个惯例,是一个不成文的约定,不是标准
- 如果不关心一个变量,就可以定义改变量的名字为_
- _是一个合法的标识符,也可以作为一个有效的变量使用,但是定义成下划线就是希望不要被使用,除非你明确的知道这个数据需要使用
- 举例
lst = [9,8,7,20]
first, *second = lst
head, *_, tail = lst
print(head)
print(tail)
_是合法的标识符,看到下划线就知道这个变量就是不想被使用
print(_)
丢弃变量
- 举例
lst = [9,8,7,20]
first, *second = lst
_ , *_, tail = lst
print(_)
print(tail)
print(_)
丢弃变量
- 总结
- _ 这个变量本身无任何语义,没有任何可读性,所以不是用来给人使用的
- Python中很多库,都使用这个变量,使用十分广泛。请不要在不明确变量作用域的情况下,使用 _ 导致和库中 _ 冲突
- 练习
- lst = list(range(10)) # 这样一个列表,取出第二个、第四个、倒数第二个
练习
- 练习
- 从lst = [1,(2,3,4),5]中,提取4出来
- 环境变量JAVA_HOME=/usr/bin,返回环境变量名和路径
- 对列表[1, 9, 8, 5, 6, 7, 4, 3, 2]使用冒泡法排序,要求使用封装和解构来交互数据
练习
- 练习
- 从lst = [1,(2,3,4),5]中,提取4出来
lst = [1,(2,3,4),5]
a,(b,c,d),e = lst
print(a,b,c,d,e)
_, (*_, val), *_ = lst
print(val)
_, [*_, val], *_ = lst
print(val)
练习
- 练习
- 环境变量JAVA_HOME=/usr/bin,返回变量名和路径
key, _ , val = "JAVA_HOME=/usr/bin".partition('=')
print(key)
print(val)
- 环境变量JAVA_HOME=/usr/bin,返回变量名和路径
- 总结:
- 解构,是Python提供的很好的功能,可以方便的提取复杂数据结构的值
- 配合 _ 的使用,会更加便利
最后
本文的另外链接是:https://herodanny.github.io/python-magedu-2018-notes9.html
Python全栈-magedu-2018-笔记9的更多相关文章
- 自学Python全栈开发第一次笔记
我已经跟着视频自学好几天Python全栈开发了,今天决定听老师的,开始写blog,听说大神都回来写blog来记录自己的成长. 我特别认真的跟着这个视频来学习,(他们开课前的保证书,我也写 ...
- Python全栈之jQuery笔记
jQuery runnoob网址: http://www.runoob.com/jquery/jquery-tutorial.html jQuery API手册: http://www.runoob. ...
- python全栈开发之OS模块的总结
OS模块 1. os.name() 获取当前的系统 2.os.getcwd #获取当前的工作目录 import os cwd=os.getcwd() # dir=os.listdi ...
- python全栈开发中级班全程笔记(第二模块、第四章(三、re 正则表达式))
python全栈开发笔记第二模块 第四章 :常用模块(第三部分) 一.正则表达式的作用与方法 正则表达式是什么呢?一个问题带来正则表达式的重要性和作用 有一个需求 : 从文件中读取所有联 ...
- python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
python全栈开发笔记第二模块 第四章 :常用模块(第二部分) 一.os 模块的 详解 1.os.getcwd() :得到当前工作目录,即当前python解释器所在目录路径 impor ...
- python全栈开发中级班全程笔记(第二模块、第三章)(员工信息增删改查作业讲解)
python全栈开发中级班全程笔记 第三章:员工信息增删改查作业代码 作业要求: 员工增删改查表用代码实现一个简单的员工信息增删改查表需求: 1.支持模糊查询,(1.find name ,age fo ...
- 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】
点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...
- 老男孩最新Python全栈开发视频教程(92天全)重点内容梳理笔记 看完就是全栈开发工程师
为什么要写这个系列博客呢? 说来讽刺,91年生人的我,同龄人大多有一份事业,或者有一个家庭了.而我,念了次985大学,年少轻狂,在大学期间迷信创业,觉得大学里的许多课程如同吃翔一样学了几乎一辈子都用不 ...
- 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂
Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
随机推荐
- Luogu P4321 随机漫游
期望DP要倒着推 Luogu P4321 题意 LOJ #2542 不一定是树,询问点不一定均为1 $Solution$ 设计一个巧妙的DP状态 设$ F(S,x)$表示当前在点$ x$已经走遍了$ ...
- C# - LINQ 语言集成查询
LINQ(Language Integrated Query) LINQ语言集成查询是一组用于C#语言的扩展.它允许编写C#代码对数据集进行查询,比如查询内存中的对象或查询远程数据库的表.利用linq ...
- javascript基础 之 保留关键字
1,保留关键字 意思是:特定的字符串要么是已经有指代了要么是未来将要有指代,所以取名字不要用保留关键字里的字符串 js保留关键字 abstract arguments boolean break by ...
- MapReduce Partition解析
Map的结果,会通过partition分发到Reducer上,reducer操作过后会进行输出.输出的文件格式后缀000001就代表1分区. Mapper处理过后的键值对,是需要送到Reducer那边 ...
- 关于redis服务无法启动问题
打开cmd终端找到redis安装路径下 输入redis-server redis.windows.conf报错信息如下 之后重新输入redis-cli.exe 运行结果 然后输入 127.0.0.1: ...
- 【easy】104. Maximum Depth of Binary Tree 求二叉树的最大深度
求二叉树的最大深度 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; ...
- [JavaScript]ECMA-6 yield语法
概述 yield关键字用于并且仅限于生成器函数(generator)内部,作用是暂停(并返回)/重启(可选修改该栈环境变量)该函数栈环境. 一般语法 调用生成器函数时返回一个可迭代对象,当调用该对象的 ...
- 关于eclipse从svn导入项目
第一次直接从eclipse svn资源库输入svn url直接将项目下载到workspace结果,web项目成了Java项目,这样操作是错误的 正确的操作应该是: file,import ,找到svn ...
- Vue CLI 3+tinymce 5富文本编辑器整合
基于Vue CLI 3脚手架搭建的项目整合tinymce 5富文本编辑器,vue cli 2版本及tinymce 4版本参考:https://blog.csdn.net/liub37/article/ ...
- Zabbix导入数据库时报错
导入mysql数据库时报错: ERROR 1046 (3D000) at line 1: No database selected 解决办法:1.备份原来的sql文件2. yum -y install ...