可循环迭代的对象称为可迭代对象,迭代器和生成器函数是可迭代对象。

  列表解析表达式:可以简单高效处理一个可迭代对象,并生成结果列表

  示例代码:

[ i ** 2 for i in range(10) ]

#输出结果

[0,1,4,9,16,25,36,49,64,81]

  生成器表达式:可以简便快捷地返回一个生成器。生成器表达式的语法和列表解析式基本一样,只不过是将[]替换成()

  生成器的数据只有在调用时才生成

  示例代码:

a = ( i ** 2 for i in range(10))

print( a )

# 输出结果,打印的是生成器对象地址

<generator object <genexpr> at 0x000001A4118978E0>

  调用方法1:

print(next(a)) 

#相当于 print(a.__next__())

  调用方法2:

for i in a:
print(i)

  调用方法3:

while True:
try:
print(next(a))
except StopIteration:
break

  

  生成器函数

  示例代码:

def fib():
a,b = 0,1
while True:
a,b = b,a+b
yield b print(fib()) for f in fib():
if f < 1000:
print(f)
else:
break # 输出结果 <generator object fib at 0x0000024F66A478E0>
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987

迭代和可迭代对象:

  1、可迭代对象:Iterable

  系列对象都是可迭代对象,生成器函数和生成器表达式也是可迭代对象。

  判断是不是可迭代对象通过collections模块中的方法进行测试,示例:

import collections

a = ( i ** 2 for i in range(10) )

b = 123

print(isinstance(a,collections.Iterable))
print(isinstance(b,collections.Iterable)) # 输出结果 True
False

  2、迭代器:Iterator

  可使用内置函数next(),调用迭代器的__next__()方法,依次返回下一个项目值的对象就是迭代器

import collections

b = [1,2,3,4]

print(isinstance(b,collections.Iterable))
print(isinstance(b,collections.Iterator)) # 输出结果,b是一个可迭代对象,但不是一个迭代器 True
False

  像列表,字典,元组都是可迭代对象,但不是迭代器,我们可以用内置函数iter()转换成迭代器,示例代码:

import collections

b = [1,2,3,4]

print(isinstance(b,collections.Iterable))
print(isinstance(b,collections.Iterator))
print(isinstance(iter(b),collections.Iterator)) # 输出结果 True
False
True

  Python内置的可迭代对象

range  :range(start,stop[,step])

map  :map(function,iterable,...)

itertools.starmap  :itertools.starmap(function,iterable)

filter  :filter(function,iterable)  filterfalse(predicate,iterable)

itertools.filterfalse  :

zip  :zip(*iterables)

zip_longest  :zip_longest(*iterables,fillvalue=None)

enumerate  :enumerate(iterable,start=0)

待续。。。

  

1.17 Python基础知识 - 迭代器和生成器初识的更多相关文章

  1. python基础知识---迭代器、生成器、装饰器

    一.迭代器 二.生成器 http://www.cnblogs.com/huxi/archive/2011/07/14/2106863.html def func(): #定义生成器,和普通函数的区别是 ...

  2. Python基础之迭代器和生成器

    阅读目录 楔子 python中的for循环 可迭代协议 迭代器协议 为什么要有for循环 初识生成器 生成器函数 列表推导式和生成器表达式 本章小结 生成器相关的面试题 返回顶部 楔子 假如我现在有一 ...

  3. python基础8 -----迭代器和生成器

    迭代器和生成器 一.迭代器 1.迭代器协议指的是对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2. ...

  4. 【Python基础】迭代器、生成器

    迭代器和生成器 迭代器 一 .迭代的概念 #迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 while True: #只是单 ...

  5. Python高手之路【九】python基础之迭代器与生成器

    迭代器与生成器 1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外 ...

  6. python 基础(五) 迭代器与生成器

    迭代器和生成器 迭代器 iterator (1) 迭代对象: 可以直接作用于for循环的 称为可迭代对象(iterable)可以通过 isinstance 判断是否属于可迭代对象 可以直接作用于for ...

  7. python基础之迭代器、生成器、装饰器

    一.列表生成式 a = [0,1,2,3,4,5,6,7,8,9] b = [] for i in a: b.append(i+1) print(b) a = b print(a) --------- ...

  8. Python基础4 迭代器,生成器,装饰器,Json和pickle 数据序列化

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...

  9. Python基础之迭代器、生成器

    一.迭代器: 1.迭代:每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值.例如:循环获取容器中的元素. 2.可迭代对象(iterable): 1)定义:具有__ite ...

随机推荐

  1. Web前端之基础知识

    学习web前端开发基础技术须要掌握:HTML.CSS.Javascript 1.HTML是网页内容的载体 内容就是网页制作者放在页面上想要让用户浏览的信息,能够包括文字.图片.视频等. 2.CSS样式 ...

  2. Iocomp控件之数字显示【图文】

    Iocomp关于数字显示有自己的一套方案.并且效果非常棒哦 效果图: 插入控件: 默认效果: 随意改动属性后: 加入变量 调用函数: ); 效果图:

  3. shrio 授权

    授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等).在授权中需了解的几个关键对象:主体(Subject).资源(Resource).权限(Permission).角 ...

  4. 2015上海网络赛 HDU 5475 An easy problem 线段树

    题意就不说了 思路:线段树,维护区间乘积.2操作就将要除的点更新为1. #include<iostream> #include<cstdio> #include<cstr ...

  5. mvc下是如何传值的

    最近在开发一个项目,用的是mvc框架,现将mvc会用到的常用传值方法总结如下: 在讲传递参数方法之前,先简单介绍一下MVC路由及运行机制.     首先,Web 浏览器向服务器发送一条URL 请求,如 ...

  6. 963B:Destruction of a Tree

    You are given a tree (a graph with n vertices and n - 1 edges in which it's possible to reach any ve ...

  7. 浅谈unicode编码和utf-8编码的关系

    字符串编码在Python里边是经常会遇到的问题,特别是写文件以及网络传输的过程中,当调用某些函数的时候经常会遇到一些字符串编码提示错误,所以有必要弄清楚这些编码到底在搞什么鬼. 我们都知道计算机只能处 ...

  8. selenium+python 安装使用

    一.序言 selenium官网selenium简单教程selenium完整教程python基础教程 二.安装python3 https://www.python.org/downloads/relea ...

  9. IOS基础学习日志(七)利用dispatch_once创建单例及使用

    自苹果引入了Grand Central Dispatch (GCD)(Mac OS 10.6和iOS4.0)后,创建单例又有了新的方法,那就是使用dispatch_once函数,当然,随着演进的进行. ...

  10. MyReport.Form表单引擎

    MyReport.Form表单引擎.主要提供表单模板的设计以及表单模板的预览填报等功能集合. 支持文本框.选择框.数字框.日期框.图片框.组合框.弹出框等经常使用控件. watermark/2/tex ...