Python学习杂记

Python中关键字yield有什么作用?

首先得理解generators,而理解generators前还要理解iterables:

你可以用在for...in...语句中的都是可迭代的:比如lists,strings,files...因为这些可迭代的对象你可以随意的读取所以非常方便易用,但是你必须把它们的值放到内存里,当它们有很多值时就会消耗太多的内存。

生成器也是迭代器的一种,但是你只能迭代它们一次.原因很简单,因为它们不是全部存在内存里,它们只在要调用的时候在内存里生成。

note:生成器和迭代器的区别就是用()代替[],还有你不能用for i in mygenerator第二次调用生成器。

Yield的用法和关键字return差不多:

>>> def createGenerator():

... mylist = range(3)

... for i in mylist:

... yield i*i ...

>>> mygenerator = createGenerator() # 创建生成器

>>> print(mygenerator) # mygenerator is an object!

<generator object createGenerator at 0xb7555c34>

>>> for i in mygenerator:

... print(i)

0

1

4

当你的函数要返回一个非常大的集合并且你希望只读一次的话,那么它就非常的方便了.

要理解Yield你必须先理解当你调用函数的时候,函数里的代码并没有运行.函数仅仅返回生成器对象,这就是它最微妙的地方:-)

然后呢,每当for语句迭代生成器的时候你的代码才会运转.

时间: 2024-12-28 20:44:53

Python学习杂记的相关文章

Python学习杂记_4_分支和循环

分支 和 循环 分支和循环这俩结构在各语言中都有着很重要的地位,当然我之前都没有学好,这里总结一下在Python学习中对这俩结构的认识. 分支结构 # 单分支 if 条件判断: 执行语句- # 双分支 if 条件判断: 执行语句- else: 执行语句- #多分支 if 条件判断: 执行语句- elif: 执行语句- else: 执行语句- 循环结构 1. while循环 ,需要定义循环变量来控制循环. i = 0初始化一个控制循环的变量 while 有关循环变量的条件判断: 执行循环语句 -

Python学习杂记_1_PyCharm使用的一些收获

一. 界面及字体的调整 装好PyCharm默认的界面是白色的,编辑区域和Console区域的字体也比较小.我个人比较喜欢界面是黑底的,主要关注区域上的字体,大一些,看着清楚一些.调整办法是这样滴~! 点击 File->Settings 打开Settings窗口,所有设置皆在此,结构也非常清晰,找呗-- 1. 黑背景 这个和选择的主题有关,Settings->Editor->Colors&Fonts,在Scheme选德古拉1(Darcula1)然后Save As一个你想要的名字即可

Python学习杂记_8_从程序外部传参的办法sys.argv

Python用 sys.argv[] 实现从程序外部传参 sys.argv 返回的是一个元组,元组的首个元素是程序本身,第二个元素之后依次是我们通过输入来指定的各个参数.即是元组,就说明这些参数是有序且不可变的,当然可以用下标来引用这个元组的每个元素,也就是你输入的各个参数,来实现参数的传递."外部"的含义,其实就是这些参数不是你在程序中定义的,而是在程序之外传递进来的. 举个栗子: ''' 写一个修改文件的程序,要求传入一个文件名,再传入一个被修改的字符串,再传入一个要修改成什么的字

Python学习杂记_3_字符串操作的常用方法

字符串操作 字符串是可以通过下标来进行取值的,但是由于字符串是不可变变量,不能通过下标来修改它的值(形式如 字符串[下标]),下标从0开始,最大下标值是字符串长度减1,即len(string)-1 Python针对字符串有个比较帅气的判断常常用在for循环里示意如下: names="Tinada, Niuer, Zhangsan, Lisi, Wangwu, Zhaoliu" name=input("Plz input the name: ") for name i

Python学习杂记_6_字典常用操作

字典操作 字典是由一对花括号括起来的一组"键值对",每个键值对就是字典的一个元素,元素在字典中是无序的,常见操作如下: info = { 'name':'xiaoming', 'sex':'nan', 'age':20, 'id':1, } print(info['id'])                    # 通过key取值 print(info['addr'])                # 通过key取值 print(info.get('id'))          

Python学习杂记_10_三元运算符

常用三元运算符来简化分支和循环的代码: 分支简化: a = 1b = 2c = a if a > 1 else bprint(c) # 以上几行等同于 a = 1b = 2if a >1: c = aelse: c = bprint(c) 循环简化: nums = list(range(1,11))s = [i for i in nums if i % 2 == 0]print(s) # 以上代码等同于 s = []nums = list(range(1,11))for i in nums:

Python学习杂记_5_列表常用操作

列表操作 列表时用方括号括起来的一组元素值,是可变变量,可通过下表取值,也可以通过下表来修改值,列表中的元素是有序的,可以是不同的基本数据类型,如: names=[1, 2, 3, "abc", "def"] 列表取值时,下标也是从0开始,最大下标是元素个数减1,即len(names)-1 列表操作的常用方法: 增: names.append('zhaocunlei')            #从末尾追加元素 names.insert(0,'yinwenqiao')

Python学习杂记_2_字符串相关的一些操作

name=input("Please input your name: ") sex=input("Please input your sex: ") print("Welcom"+name) #不推荐用,需要运算效率低 print("Welcome",name)# 逗号连接 print("Welcom %s"%name)#使用站位符,这种最常用 print ("Welcom %s, your s

python学习:程序控制结构·作业20141219

Python学习:程序控制结构 20141219 编程环境: windows 7 x64 python 2.7.6 题目: 1 编写程序,完成下列题目(1分) 题目内容: 如果列出10以内自然数中3或5的倍数,则包括3,5,6,9.那么这些数字的和为23.要求计算得出任意正整数n以内中3或5的倍数的自然数之和. 输入格式: 一个正整数n. 输出格式: n以内中3或5的倍数的自然数之和. 输入样例: 10 输出样例: 23 时间限制:500ms内存限制:32000kb n = int(raw_in