Python入门 (三)

迭代器与生成器



迭代器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。

迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter() 和 next()

字符串,列表或元组对象都可用于创建迭代器:

两个实例

list = [1,2,3,4]
it = iter(list)
for x in it:
    print (x, end=" ")
import sys         

list = [1,2,3,4]
it = iter(list)    

while True:
    try:
        print (next(it))
    except StopIteration:
        sys.exit()

  



生成器

在 Python 中,使用了 yield 的函数被称为生成器(generator)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值,并在下一次执行 next() 方法时从当前位置继续运行。调用一个生成器函数,返回的是一个迭代器对象。

简而言之,遇到yield暂停,下次调用时从当前位置继续

两个实例

-- 斐波拉契数列

def fibonacci(n):  # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n):
            return
        yield a
        a, b = b, a + b
        counter += 1

f = fibonacci(10)  # f 是一个迭代器,由生成器返回生成

while True:
    try:
        print(next(f), end=" ")
    except StopIteration:
        sys.exit()

-- 判断质数

import sys
import math

def tem(n) :
    for t in range(2,n) :
        for x in range(2,int(math.sqrt(t)) + 1) :
            if t % x == 0 :
                break;
        else :
            yield t

f = tem(100)

while 1 :
    try :
        print(next(f),end = ‘ ‘)
    except StopIteration :
        sys.exit()

  

参考资料

 http://www.runoob.com/python3/python3-function.html

原文地址:https://www.cnblogs.com/wenoi/p/Python_3.html

时间: 2024-10-08 05:58:51

Python入门 (三)的相关文章

python入门三:文件操作

一.文件操作 1.文件对象:和c一样,要想对一个文件进行操作,需要获取该文件的对象 1 f = open("xxx") # 打开文件并获取文件对象 2 f.xxx # 对文件进行某些操作 3 f.close() # 关闭文件 2.访问模式: open函数除了接受一个文件名参数外,还可以设定文件的访问模式(open其他的参数不太能理解) 无   以只读方式打开,文件必须存在 r     以只读方式打开,文件必须存在 w    以只写方式打开, 先删除原有内容再写入新内容,文件不存在创建新

python入门三十天----线程 调用两个CPU

线程threeding:   + join 练习: 1 #!/usr/bin/env python3 2 #-*- coding:utf-8 -*- 3 ''' 4 Administrator 5 2018/8/10 6 ''' 7 8 import threading 9 from time import time,sleep,asctime,ctime 10 11 def music(name): 12 for i in range(2): 13 print("......music %s

visual studio 2015 搭建python开发环境,python入门到精通[三]

在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo,这里略带一句,其实就"学习python"而言,比较建议使用pycharm,pycharm可以设置VS或者eclipse等多种IDE的编码,可以让绝大部分其他语言使用IDE的习惯者更容易上手.这一点兼容确实做的很好.不过既然这么多园友要求使用vs开发python的话,就介绍一下visual

Python入门基础学习 三

Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形,true就相当于1,false相当于0,可以用来计算 类型转换 转换:整数:int();字符串:str();浮点数:float() 转换例子:(图9) 如果用内置函数当变量名,比如str=123,一旦被赋值,再使用这个函数会被报错. type()函数可以明确告诉我们变量类型. isinstance

Python入门(三)

我要使用Python来辅助解析路由器配置中的Vlan.Eth-Trunk和interface的信息,在这些信息当中,需要体现出Vlan和interface.Eth-Trunk和interface之间的关系. 网上已经有很多比较规整的Python入门的文章,比较规整的入门教程基本上都是从最基础的开始介绍Python语言.这里我就按照我的需要来介绍Python的入门,直接是通过问题出发来学习Python的使用. 第一个来解决的是如何获得设备的名称,在前面介绍过,设备的名称是disp cur命令后,然

2018-06-20 中文代码示例视频演示Python入门教程第三章 简介Python

知乎原链 Python 3.6.5官方入门教程中示例代码汉化后演示 对应在线文档: 3. An Informal Introduction to Python 不知如何合集, 请指教. 中文代码示例Python入门教程 3.1.1_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 中文代码示例Python入门教程 3.1.2 第一部分_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 中文代码示例Python入门教程 3.1.2 第二部分_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

Python入门

Python入门教程(个人日常学习记录,有不妥之处欢迎指正!后续更新,敬请期待...) 学习地址:http://www.imooc.com/learn/177 Python中数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.在Python中,能够直接处理的数据类型有以下几种: 一.整数 Python可以处理任意大小的整数,当然包括

python入门学习课程推荐

最近在学习自动化,学习过程中,越来越发现coding能力的重要性,不会coding,基本不能开展自动化测试(自动化工具只是辅助). 故:痛定思痛,先花2个星期将python基础知识学习后,再进入自动化的学习. 现推荐几个学习python基础知识的途径: 1.<笨办法学python>(第三版),从头到尾一个字一个字的照着程序敲: 2.慕课网<python入门>课程: 3.网易云课堂<疯狂的python>公开课. 4.<廖雪峰Python3>pdf文件. 这也是

《Python入门》第一个Python Web程序——简单的Web服务器

上一篇讲了<Python入门>Windows 7下Python Web开发环境搭建笔记,接下来讲一下Python语言Web服务的具体实现:第一个Python Web程序--简单的Web服务器. 与其它Web后端语言不同,Python语言需要自己编写Web服务器. 如果你使用一些现有的框架的话,可以省略这一步: 如果你使用Python CGI编程的话,也可以省略这一步: 用Python建立最简单的web服务器 利用Python自带的包可以建立简单的web服务器.在DOS里cd到准备做服务器根目录