Python3 函数进阶2
迭代器
迭代器是访问容器类数据类型元素的一种方式
迭代器是一个可以记住遍历的位置的对象
迭代器对象从容器类数据类型的第一个元素开始访问, 直到所有元素被访问完后结束
迭代器只能往前不会后退
可迭代对象
- Python内置的
str/list/tuple/dict/set/file/都是可迭代对象 - 拥有
__iter__内置方法的都是可迭代对象
迭代器对象
可迭代对象使用
__iter__方法可以得到迭代器对象拥有
__iter__和__next__内置方法的就是迭代器对象
lis = [1, 2, 3]
# 可迭代对象使用__iter__方法可以得到迭代器对象
iter_lis = lis.__iter__()
print(iter_lis.__next__()) # 1
print(iter_lis.__next__()) # 2
print(iter_lis.__next__()) # 3
print(iter_lis.__next__()) # StopIteration
总结和补充
执行可迭代对象的
__iter__方法, 拿到的返回值就是迭代器对象执行迭代器对象
__next__方法, 拿到迭代器对象中的一个值执行迭代器对象
__iter__方法, 拿到的是迭代器本身文件本身就是迭代器对象
三元表达式
三元表达式就是对if...else...语句的简化写法(不建议使用)
x = 10
y = 20
# 普通写法
if x > y:
print(x)
else:
print(y)
# 三元表达式
print(x) if x > y else print(y)
列表推导式
列表推导式可以用来生成新的列表
lis = [i for i in range(10)]
print(lis) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 我们还可以对i进行数学运算
lis = [i+1 for i in [1, 2, 3]]
print(lis) # [2, 3, 4]
字典生成式
字典生成式可以用来生成新的字典
dic = {i: i**2 for i in range(3)}
print(dic) # {0: 0, 1: 1, 2: 4}
zip()函数
zip() 函数用于将可迭代的对象作为参数, 将对象中对应的元素压缩成一个个元祖, 然后返回由这些元祖组成的对象.
- 我们可以使用list()转换来输出列表
- 如果各个迭代器的元素个数不一致, 则返回列表长度以最短的为准
- 利用
*操作符, 可以将元祖解压为列表
a = [1, 2, 3]
b = [4, 5, 6]
c = [4, 5, 6, 7, 8]
zipped = zip(a, b)
print(zipped) # <zip object at 0x000000000A0012C8> 返回多个元祖组成的对象
print(list(zipped)) # [(1, 4), (2, 5), (3, 6)]
print(list(zip(a, c))) # [(1, 4), (2, 5), (3, 6)] 以短的为准
a1, b1 = zip(*zip(a,b)) # zip(*) 可理解为解压
print(list(a1)) # [1, 2, 3]
print(list(b1)) # [4, 5, 6]
生成器
- 生成器本质上就是一个自定义的迭代器
- 含有
yield关键字的函数叫做生成器
def gene():
print(1)
yield 1
print(2)
yield 2
g = gene()
print(g) # <generator object gene at 0x0000000009F81258>
print(g.__next__()) # 1 1
print(g.__next__()) # 2 2
- yield的特性:
- 暂停函数
- 通过
__next__取后面的值
递归
递归是一种特殊的函数嵌套, 既在函数内部直接调用函数本身
递归函数的特性:
- 函数内部调用函数本身
- 递归必须要有规律
- 必须要有退出条件
count = 0
def func():
global count
count +=1
print(count)
if count == 5:
return
a()
'''
1
2
3
4
5
'''
Python3 函数进阶2的更多相关文章
- 5 Python3 函数进阶&迭代器与生成器
1.函数进阶 1.1.名称空间 又名name space, 顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的 ...
- Python3 函数进阶3
目录 匿名函数 定义匿名函数 匿名函数的使用 内置函数 匿名函数 定义匿名函数 我们之前定义的函数都是有名函数, 我们可以通过函数名来调用 匿名函数顾名思义就是一种没有绑定函数名的函数, 使用一次既被 ...
- Python3 函数进阶1
目录 闭包函数 什么是闭包函数 闭包函数的作用 装饰器 什么是装饰器 无参装饰器 有参装饰器 闭包函数 什么是闭包函数 闭包函数本质上就是函数嵌套和高阶函数 闭包函数的满足条件: 必须嵌套函数 内嵌函 ...
- python3函数进阶
1.命名空间和作用域 命名空间 加载 内置命名空间 python解释器自带的变量和函数 开启python解释器自动加载内置命名空 ...
- 洗礼灵魂,修炼python(25)--自定义函数(6)—从匿名函数进阶话题讲解中解析“函数式编程”
匿名函数进阶 前一章已经说了匿名函数,匿名函数还可以和其他内置函数结合使用 1.map map():映射器,映射 list(map(lambda x:x*2,range(10))) #把range产生 ...
- 10.Python初窥门径(函数进阶)
Python(函数进阶) 一.函数的传参(接上期) 形参角度(一共四种,后两种) 动态参数(万能参数)* # 定义一个函数时,*所有的位置参数聚合到一个元组中 def func(*args): # * ...
- 全面系统Python3入门+进阶课程 ✌✌
全面系统Python3入门+进阶课程 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 无论是大数据.人工智能还是机器学习,Python都是最热门的首选语言 ,这 ...
- 深入理解javascript函数进阶系列第一篇——高阶函数
前面的话 前面的函数系列中介绍了函数的基础用法.从本文开始,将介绍javascript函数进阶系列,本文将详细介绍高阶函数 定义 高阶函数(higher-order function)指操作函数的函数 ...
- python3函数
一.python3函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.可以自己创建函数,这被叫做用户自定义函数. 1.定义函数规则 函 ...
随机推荐
- (C#)WPF:关于INotifyPropertyChanged接口的介绍
注意:INotifyPropertyChanged接口位于System.CompenentModel名称空间中,想使用INotifyPropertyChanged接口时,头文件需添加“using Sy ...
- win10 visual studio 2017环境中安装CUDA8
从https://developer.nvidia.com/cuda-toolkit-archive下载CUDA 8 安装 从https://developer.nvidia.com/gamework ...
- 力扣(LeetCode)加一 个人题解
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 1: 输入 ...
- python:爬虫0
什么是网页爬虫,也叫网页蜘蛛.把互联网比作一个蜘蛛网,有好多节点,这个蜘蛛在网上爬来爬去,对对网页中的每个关键字进行建立索引,然后建立索引数据库,经过复杂的排序算法后,这些算法的结果将按照相关度的高低 ...
- epoll介绍及使用
小程序功能:简单的父子进程之间的通讯,子进程负责每隔1s不断发送"message"给父进程,不需要跑多个应用实例,不需要用户输入. 首先上代码 #include<assert ...
- Python自动化办公之操作Excel文件
模块导入 import openpyxl 读取Excel文件 打开Excel文件 workbook = openpyxl.load_workbook("test.xlsx") 输出 ...
- Git的使用和基本概念理解
参考:https://www.liaoxuefeng.com/wiki/896043488029600 一).git的使用: 1.创建版本库(Resopsitory),相当于一个目录,目录中所有的文件 ...
- ubuntu 16.04安装并启动openssh
对于没有图形界面的linux系统,一般都会用到远程连接控制,,因此新安装的linux系统,在配好网络后,首先要安装的就是远程连接工具,ssh是常用的方法. ps -ef |grep ssh //查看 ...
- 使用Java窗口程序执行输入的任何cmd命令
利用Java窗口程序来执行用输入的任何命令 实现效果: Java桌面窗口,输入框.按钮,当输入框被输入命令的时候,点击按钮执行命令! 实现代码 package com.remote.remote.ag ...
- 【Oracle】Oracle数据库基本指标查看
目录 1.查看表空间 2.查看用户 3.查看数据库内存 4.查看数据库版本 5.oracle归档情况 6.查看redo log日志位置 7.查看数据库的控制文件 8.查看RMAN的备份情况 9.FRA ...