Python菜鸟之路:Python基础-生成器和迭代器

一、迭代器

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

1. 迭代器优点

  对于无法随机访问的数据结构(比如set)而言,迭代器是唯一的访问元素的方式。本质:迭代器就是生成一个有next()方法的对象,而不是通过索引来计数。

  不要求事先准备好整个迭代过程中所有的元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件,或是斐波那契数列等等。这个特点被称为延迟计算或惰性求值(Lazy evaluation)。

  提供了一个统一的访问集合的接口,只要定义了__iter__()方法对象,就可以使用迭代器访问。

2. 两个基本的方法

  1) next方法:返回迭代器的下一个元素

a = {2,3,4,}
b = iter(a)
print(b.__next__())
print(b.__next__())
print(b.__next__())
print(b.__next__())

out:
2
3
4

Traceback (most recent call last):
  File "practice3.py", line 216, in <module>
    print(b.__next__())
StopIteration

# Ps:从上述例子可以看出,迭代器中元素被访问完毕,如果再次调用__next__方法,会提示StopIteration

  2) __iter__方法:返回迭代器对象本身

a = {2,3,4,}
b = iter(a)
print(b.__iter__())

out: <set_iterator object at 0x0000000000B377E0>

  迭代器对象的访问方法,一般为for循环,循环取出可迭代对象中的元素。

二、生成器

  生成器是特定的函数,允许你返回一个值,然后“暂停”代码的执行,稍后恢复。生成器使用了“延迟计算”,所以在内存上面更加有效。带有 yield 的函数在 Python 中被称之为 generator,即生成器。

时间: 2024-08-07 16:59:36

Python菜鸟之路:Python基础-生成器和迭代器的相关文章

Python学习之路-装饰器&生成器&正则表达式

装饰器 通俗的讲,装饰器就是在不改变源代码基础上,给源代码增加新功能. 不改变函数的源代码.调用方式.返回值等,给函数增加新功能. 经典案例:登录装饰器, def login_decorator(func):     def inner():         if USER_TEMP["status"] == False:             print("\033[31;1m用户未登录,请先登录\033[0m")             login_atm()

Python菜鸟之路:Django 路由补充FBV和CBV

在Python菜鸟之路:Django 路由.模板.Model(ORM)一节中,已经介绍了几种路由的写法及对应关系,那种写法可以称之为FBV: function base view . 今天补充另外一种路由关系的写法:CBV,即:class base view , 也可以看做为面向资源编程的另外一种叫法,类似tornado中的路由写法. 1. 建立路由关系urls.py from app01 import views urlpatterns = [ url(r'^home/', views.Hom

Python学习之路-Day1-Python基础

Python学习之路第一天 学习内容: 1.Python简介 2.安装 3.第一个Python程序 4.变量 5.字符编码 6.用户输入 7.表达式if..else语句 8.表达式for语句 9.break和continue 10.while循环 11.字符串格式化 1.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOB

python学习之路_python基础(1)

学习内容: 1.python介绍 2.python程序初接触和变量 3.python用户交互 4.python数据类型 5.python循环if...(elif)...else 6.python循环while...else 7.python循环for...else 8.python循环中断break和continue 一.python介绍 1)python优缺点 先看优点: Python的定位是“优雅”.“明确”.“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容

PYTHON学习之路_PYTHON基础(4)

学习内容: 1.Python函数的基本语法 2.Python函数的返回值与变量 3.Python嵌套函数 4.Python递归函数及实例(二分查找) 5.Python匿名函数 6.Python内置方法 7.Python实例 一.Python函数的基本语法 1.定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 def f(n): print (n**n) return n**2 2.特性 (一)减少重复代码 (二)使程序变的可扩展 (三)使程序变

Python菜鸟之路:Django Admin后台管理功能使用

前言 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), ] 上边看到导入的admin模块,就是本节所要说的主要内容 主要功能 功能1:提供数据库管理功能 基于admin模块,可以实现类似数据库客户端的功能,对数据进行增删改查 功能2:二次开发 基于该模块

PYTHON学习之路_PYTHON基础(3)

学习内容: 1.Python集合 2.Python文件操作 3.Python字符编码 4.Python函数介绍 一.Python集合 1)集合的创建: list_1 = [1,3,5,7,26,8,65]list_1=set(list_1) list_2 =set([2,4,5,6,7,9,65]) print (list_1,list_2) 2)集合间的操作: print ("交集:", list_1.intersection(list_2)) #交集print("并集&q

python学习之路(基础篇)——基本语法流程控制

一.hello world程序 1. 在linux 下创建一个文件叫hello.py,并输入 print("Hello World!") 然后执行命令:python hello.py ,输出 localhost:~ jieli$ vim hello.py localhost:~ jieli$ python hello.py Hello World! 2.由 python 解释器来执行 #!/usr/bin/env python print "hello,world"

Python菜鸟之路一:Python基础(三)

一.编码 推荐阅读<字符编码的前世今生>:http://tgideas.qq.com/webplat/info/news_version3/804/808/811/m579/201307/218730.shtml 1. 常见编码介绍 GB2312编码:适用于汉字处理.汉字通信等系统之间的信息交换 GBK编码:是汉字编码标准之一,是在 GB2312-80 标准基础上的内码扩展规范,使用了双字节编码,即每个汉子占2byte. ASCII编码:是对英语字符和二进制之间的关系做的统一规定 Unicod