1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素.迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁.这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件 特点: 可迭代对象遵循可迭代器协议 访问者不需要关心迭代器内部的结构,仅需通过next()方法…
本质上来说生成器迭代器都是一种数据类型,如果你直接打印生成器是无法得出值的,会得到一串内存地址,即一个对象想要得到生成器的值必须要用for或者next,list等来获取 生成器生成器就是一个可迭代对象本质上就是一种数据类型 表现形式有两种 生成器函数: 使用yield 代替 return,但是可以返回多次值 调用之后函数内的代码不执行,返回生成器 每从生成器中取一个值就执行一段,遇到yield就停止 如何从生成器取值: for: 如果没有break就可一直取到最后 next:每次取一个,首次使用…
一:列表解析 列表解析(List comprehensions)来自函数式编程语言Haskell .它可以用来动态地创建列表.它在 Python 2.0 中被加入. 列表解析的语法:     [expr for iter_var in iterable] 这个语句的核心是 for 循环,它迭代 iterable 对象的所有条目.前边的 expr 应用于序列的每个成员,最后的结果值是该表达式产生的列表. 比如一个计算序列成员的平方的 lambda 函数表达式: >>> map(lambda…
python利用or在列表解析中调用多个函数.py """ python利用or在列表解析中调用多个函数.py 2016年3月15日 05:08:42 codegay """ '''有时候我会在列表解析中write文件, 或者调用print显示输出,不是为了收集结果, 而是因为能省代码行数''' #代码例子1 with open("a.txt","w+") as f: [print(str(r)) for…
装饰器 器即函数,装饰即修饰,意指为其他函数添加新功能 装饰器定义:本质就是函数,功能是为其他函数添加新功能 装饰器涉及的知识点= 高阶函数+函数嵌套+闭包 在遵循下面两个原则的前提下为被装饰者新功能 必须遵循的原则: 1)一定不能修改源代码 2)不能修改调用方式 语法糖(格式符号):@ @timer #@timer就等同于cal=timer(cal) def cal(array): res=0 for i in array: res+=i return res cal(range(10)) #…
一.列表解析 列表解析来自函数式编程语言(haskell),语法如下: [expr for iter_var in iterable] [expr for iter_var in iterable if cond_expr] 第一种语法:首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表. 第二种语法:加入了判断语句,只有满足条件的内容才把iterable里相应内容放到i…
迭代器为类序列对象提供了一个类序列的接口.Python 的迭代无缝的支持序列对象,而且还允许程序猿迭代非序列类型,包括用户定义的对象. 迭代器是一个next()方法的对象,而不是通过索引计数.当需要下一项时,调用迭代器(Iterator)的next()方法就可以获得.条目全部取出后,会引发一个StopIterration 异常.这并不表示错误发生,只是表示迭代完成.迭代器不能向后移动,不能回到开始,也不能复制一个迭代器. eg. >>> myTupe = (123,'xyz',45.67…
目录 目录 迭代器 iter 内建的迭代器生成函数 迭代器在 for 循环中 迭代器与字典 迭代器与文件 创建迭代器对象 创建迭代对象并实现委托迭代 迭代器的多次迭代 列表解析 列表解析的样例 列表解析和迭代器 迭代器 迭代器是一个含有 next() 方法的对象,让我们可以迭代不是序列数据类型但表现出序列行为的对象,所以可以说迭代器为类序列对象提供了一个类序列的接口(只要是实现了 __iter__() 方法的对象,就可以使用迭代器来进行访问).迭代器从对象的第一个元素开始访问,直到所有的元素被遍…
知识点程序: #! /usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "DaChao" # Date: 2017/6/16 l = [i for i in range(100) if i%2 > 0] print(l) ########################### #生成器 generator!!! 模拟tail grep功能 ########################### # import t…
解包参数列表 当参数已经在python列表或元组中但需要为需要单独位置参数的函数调用解包时,会发生相反的情况.例如,内置的 range() 函数需要单独的 start 和 stop 参数.如果它们不能单独使用,请使用 * 运算符编写函数调用以从列表或元组中解包参数: >>> >>> list(range(3, 6)) # normal call with separate arguments [3, 4, 5] >>> args = [3, 6] &g…