美文网首页
常见函数归纳(一)

常见函数归纳(一)

作者: 易点梅 | 来源:发表于2019-04-13 11:44 被阅读0次

1、enumerate():可以把一个序列变成索引-元素对

enumerate

2、列表生成式

    list(range(1,11)) -->[1,2,3,4,5,6,7,8,9,10]

    [x * x for x in range(1,11) if x %2 == 0]----->偶数的平方

    [m + n for m in 'ABC' for n in 'XYZ'] --->全排列['AX','AY','AZ','BX','BY','BZ','CX','CY','CZ']

3、生成器generator:一边循环一边计算的方法,生成器保存的是算法

(1) 简单的生成器:g = (x * x for x in range(1,11)),使用next(g)可获取一个值,最好是遍历:

        for  num  in  g:

                    print(num)

(2)使用yield关键字定义的生成器:如果一个函数定义中包含yield关键字,那么这个函数就不是普通函数,而是生成器generator

        def    fib(max):

                n,a,b = 0,0,1

                while n < max:

                        yield  b

                        a,b = b,a+b

                return "done"

generator和普通函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。普通函数调用直接返回结果,而generator函数的“调用”实际返回一个generator对象。

遍历yield生成器:

            for    num    in    fib(5):

                        print(num)

获取generator函数的return返回值:用for循环调用generator时,发现拿不到generator的return语句的返回值。如果想要拿到返回值,必须捕获StopIteration错误,返回值包含在StopIteration的value中:

获取generator函数的return值

4、迭代器

可直接作用于for循环的数据类型有以下几种:

(1)集合数据类型:list,set,tuple,str,dict

(2)generator生成器:生成器和带yield的generator function

这些可以直接作用于for循环的对象称为:可迭代对象Iterable

可以被next()函数调用并不断返回下一个值的对象称为:迭代器Iterator

生成器都是Iterator,但是可迭代对象Iterable却不是Iterator

把Iterable变成Iterator可以用iter()函数

为什么list、dict、str等数据类型不是Iterator?

这是因为Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。

Iterator甚至可以表示一个无限大的数据流,例如全体自然数。而使用list是永远不可能存储全体自然数的。

总结

凡是可作用于for循环的对象都是Iterable类型;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

Python的for循环本质上就是通过不断调用next()函数实现的,例如:

相关文章

  • 常见函数归纳(一)

    1、enumerate():可以把一个序列变成索引-元素对 2、列表生成式: list(range(1,11)...

  • 常见函数归纳(二)

    1、map()函数 map()函数接收两个参数,一个是函数,一个是序列Iterable,map()将传入的函数以此...

  • 常见函数归纳(三)

    一、返回函数:即函数作为返回值 有时调用函数不需要立即得到函数的运行结果,而是根据程序流程再进行计算,这时候适合用...

  • php伪协议

    首先归纳下常见的文件包含函数:include、require、include_once、require_once、...

  • 思维法则

    常见的思维方式归纳及其应用

  • 常见问题归纳

    出现这种问题一般是因为:一:jar包没有导入二:jar包导入了,但是版本较低 pom.xml文件中报错,到远程仓库...

  • 常见排序算法归纳

    各类排序算法 排序算法一般分类: 冒泡排序 原理 比较两个相邻的元素,将值大的元素交换至右端。 思路 依次比较两个...

  • Python学习笔记七:内置函数补充,函数作用域,闭包及递归

    一、常见的内置函数 1. 查看内置函数: 2. 常见函数: 3. 进制转换函数: 4. 补充: (1) enume...

  • Python语法-函数进阶篇

    主要是对函数的一些补充内容,包括递归函数,常见内置函数和常见的高阶函数的使用 递归函数 和所有语言一样,递归函数说...

  • 求函数定义域的常用方法

    常见的用解析式表示的函数的定义域可以归纳如下:(1)若是整式,则的定义域是.(2)若是分式,则要求分母不为零.(3...

网友评论

      本文标题:常见函数归纳(一)

      本文链接:https://www.haomeiwen.com/subject/naklwqtx.html