以下为作者学习python时所做的学习笔记,语言上可能不是那么严谨,希望大家多多提交自己的意见,如有错误也请大家能够指出,在此谢谢大家。
一、生成器:具有生成能力,只负责生成
1. 概念引入:同xrang,仅生成,只有在运行时才创建
2. 特点:
a.函数内有yield的函数就是生成器函数
b.执行生成器函数时,只创建生成器,内部代码不执行
c.执行__next__方法,函数内部代码开始执行,至下一个yield中止
d.当函数遇到return时,则整体退出,不再执行之后的代码
3. 代码:
# !usr/bin/env python
# -*- coding:utf-8 -*-
def xrang(): # 生成器函数
print(11)
yield 1
print(22)
yield 2
# return
print(33)
yield 3
r = xrang() # 生成生成器
# 执行函数时
ret = r.__next__() # 执行函数,至yield中止,结果:11
print(ret) # 返回值为yield值,结果:1
ret = r.__next__() # 从上次中止位置开始执行函数,至下一个yield中止,结果:22
print(ret) # 返回值为yield值,结果:2
# 如果加入return,此时会报错,且__next__()方法返回容器的下一个元素,直到结尾抛出StopIteration异常。
ret = r.__next__() # 从上次中止位置开始执行函数,至下一个yield中止,结果:33
print(ret) # 返回值为yield值,结果:3
二、迭代器:具有访问能力,不要求事先准备好整个迭代过程中所有的元素。仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合。对了,作者建了个小群,有兴趣的亲们可以入群一起聊天,学习,交流:145 010 486
二、迭代器:具有访问能力,不要求事先准备好整个迭代过程中所有的元素。仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合。
1. 特点
a.访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
b.不能随机访问集合中的某个值 ,只能从头到尾依次访问
c.访问到一半时不能往回退
d.便于循环比较大的数据集合,节省内存
2. __next__
见上例
3. for循环:Python将对关键字in后的对象调用iter函数获取迭代器,然后调用迭代器的next方法获取元素,直到抛出StopIteration异常。对迭代器调用iter函数时将返回迭代器自身,所以迭代器也可以用于for语句中,不需要特殊处理。
现在有很多人都想学一点编程,但是直接看教程又有点太难下手。
之前有几个朋友都问我能不能指导他们一下入门学个语言,于是我就弄了个零基础免费学习python的群,每天讲一点点很简单的内容。如果有0基础想入门的新手,不如来跟着看看,欢迎加入我们共同学习的队伍。(145010486)
# !usr/bin/env python
# -*- coding:utf-8 -*-
def rang(n): # 生成器函数
start = 0
while True:
if n
return
yield start
start += 1
for i in rang(10):
print(i)
领取专属 10元无门槛券
私享最新 技术干货