Python基础—08-函数使用(02)
2018-09-19 17:23
239 查看
函数使用
生成器
-
使用场景:
在使用列表时,很多时候我们都不会一下子使用全部的数据,通常都是一个一个使用,但是数据量较小的时候,对于内存的占用可以不用过于关心;但是当数据量较大时,就会出现内存使用突然增大的情况。为了解决内存占用突然增大的问题,python中引入了生成器的概念
-
使用方式:
[ul] 将列表生成式中的[]改为()即可
lt = (i for i in range(2)) # 转换为列表 # print(list(lt)) # 一个一个获取,取完后继续使用next会报错 # print(next(lt)) # 遍历 for i in lt: print(i)
说明:任意方式的使用生成器,都只能时单次的。
- 通过在函数中使用关键字
yield
完成
def test(n): for i in range(1, n+1): yield i t = test(5) # 生成器对象 print(t) # 一次一个获取 # print(next(t)) # print(next(t)) # print(next(t)) # 遍历 # for i in t: # print(i) # 转换为列表 print(list(t))
总结:
-
生成器保存了生成数据的算法,并不是所有的数据
迭代器
-
定义:能够使用for-in进行遍历,并且可以通过next函数依次获取元素的对象
-
说明:
[ul] 生成器就是一种特殊的迭代器 - 判断一个对象是否是迭代器
from collections import Iterator lt = (i for i in range(10)) print(isinstance(lt, Iterator))
- 字符串、列表、元组、集合、字典等都不是迭代器,它们都是可迭代对象
可迭代对象
-
定义:能够使用for-in进行遍历的对象,都是可迭代对象
-
使用:判断是否是可迭代对象
from collections import Iterable print(isinstance(lt, Iterable))
-
说明:
[ul] 迭代器一定是可迭代对象 - 前面学习的列表、元组等都是可迭代对象
将可迭代对象转换为迭代器,使用专门的函数
iter
高级函数
-
map
[ul] 格式:map(func, iter)
- 说明: 接收两个参数:一个函数和一个可迭代对象
- 返回值:返回一个生成器
- 生成器内容是将func依次作用域iter每个元素的处理结果
lt = [1, 2, 3, 4] def double(x): return x * 2 # 返回一个生成器 # m = map(double, lt) m = map(lambda x: x*x, lt) print(list(m))
- 练习: 了解字符串处理函数strip
- 使用map完成:将一个元素全为字符串的列表中的元素全部去掉两边的空白,首字母大写
filter
-
格式:
filter(func, iter)
lt = [1, 2, 3, 4, 5] # 提取偶数 f = filter(lambda x: x%2==0, lt) print(list(f))
- 练习:提取能被3整除的奇数元素
reduce
-
格式:
reduce(func, iter)
from functools import reduce lt = [1, 2, 3, 4, 5] # 求和 # s = reduce(lambda x,y: x+y, lt) # 转换为12345 s = reduce(lambda x,y: x*10+y, lt) print(s)
- 练习:求列表中所有元素的乘积
random
- randint:生成指定区间的一个随机整数
- random:生成0~1之间的随机小数
- uniform:生成指定范围内的随机浮点数
- choice:随机提取一个元素
- sample:随机提取指定个数的元素,返回一个列表
- choices:sample函数指定提取元素个数为1的情况
- shuffle:打乱元素顺序
练习:
- 使用random函数实现randint函数的功能
- 生成指定长度的随机字符串,参数:长度、类型
- 将字符串完成如下转换,如:
IloveYOUmoreTHANiCANsay => I love you more than i can say
- 将一个列表的元素完成特定的向右移动,参数:列表,移动长度 [ul] 如:[1, 2, 3, 4, 5],移动2,结果:[4, 5, 1, 2, 3]
1!+2!+3!+...+n!
可以使用递归
相关文章推荐
- python入门基础教程08 函数的形参与实参
- python程序设计基础4:python函数设计和使用
- python 9-1 如何使用函数装饰器,定义函数装饰器,用来生成一个原函数基础添加新功能的函数,替代原函数
- Python3.5基础——函数的定义与使用
- Python基础—07-函数使用(01)
- Python基础之——使用字典和函数构造switch
- python基础===getattr()函数使用方法
- 【Python自学】08. 函数基础(上)
- python入门基础教程08 函数的形参与实参
- python基础:os模块中关于文件/目录常用的函数使用方法
- Python基础语法(2)——字典、函数定义使用、控制流(if&for&while)
- Python基础-函数及函数参数神奇的使用
- Python基础知识——split()函数的使用
- python基础,计数器函数(闭包的使用)
- 函数08 - 零基础入门学习C语言39
- python的函数怎么使用传递引用的方式
- PowerShell V2 高级函数使用举例(02)
- [转]Ultra Fractal教程系列16——学习基础技巧08——使用渐变
- [Python入门及进阶笔记]Python-基础-函数小结
- 使用BIOS进行键盘输入和磁盘读写02 - 零基础入门学习汇编语言76