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#怎么实现文件下载功能的四种方法
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...
- nyoj 455-黑色帽子
455-黑色帽子 内存限制:64MB 时间限制:1000ms 特判: No 通过数:4 提交数:7 难度:1 题目描述: 最近发现了一个搞笑的游戏,不过目前还没玩过.一个舞会上,每个人 ...
- 星际争霸2 AI开发(持续更新)
准备 我的环境是python3.6,sc2包0.11.1 机器学习包下载链接:pysc2 地图下载链接maps pysc2是DeepMind开发的星际争霸Ⅱ学习环境. 它是封装星际争霸Ⅱ机器学习API ...
- 力扣(LeetCode)平方数之和 个人题解
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c. 示例1: 输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5 示例2: 输入: 3 ...
- Windows 10上源码编译glog和gflags 编写glog-config.cmake和gflags-config.cmake | compile glog and glags on windows from source
本文首发于个人博客https://kezunlin.me/post/bb64e398/,欢迎阅读! compile glog v0.3.5 and glags on windows from sour ...
- Java中的工具类究竟如何命名?
先来几个例子 JDK自带工具类 Arrays.asList(); Objects.equals(); Collections.sort(); Spring框架工具类 StringUtils.isEmp ...
- 理解Redis持久化
本文首发于:https://mp.weixin.qq.com/s/WVUGWuNrGoyY_7aDf7NNmA 微信公众号:后端技术指南针 0.前言 通俗讲持久化就是将内存中的数据写入非易失介质中,比 ...
- 在React旧项目中安装并使用TypeScript的实践
前言 本篇文章默认您大概了解什么是TypeScript,主要讲解如何在React旧项目中安装并使用TypeScript. 写这个的目的主要是网上关于TypeScript这块的讲解虽然很多,但都是一些语 ...
- python3 pip报错 TypeError: 'module' object is not callable
使用命令:python -m pip install xx即可,需要在pip前加python -m
- 【CPLUSOJ】【USACO】【差分约束】排队(layout)
[题目描述] Robin喜欢将他的奶牛们排成一队.假设他有N头奶牛,编号为1至N.这些奶牛按照编号大小排列,并且由于它们都很想早点吃饭,于是就很可能出现多头奶牛挤在同一位置的情况(也就是说,如果我们认 ...