python生成器和迭代器的使用场景
python用法?
python用法?
一、 变量类型
1、 变量赋值
Python中的变量赋值不需要类型声明,每个变量在使用前都必须赋值,变量赋值之后才会被创建。使用等号进行变量的赋值。
2、 多个变量赋值
为多个变量赋值时或进行列表内数据的交换时,可以使用这样的赋值方式。
3、 标准数据类型
在内存中存储的数据可以有多种类型。python定义了一些标准类型,用于存储各种类型的数据。下面列举了几种数据类型:
A、 数字
数字数据类型用于存储数值,数字类型是不可变数据类型。Python支持3种不同的数字类型:
int:通常被称为整型,不带小数,正负整数都可以,注意python3没有python2的Long类型。
float:浮点型由整数部分与小数部分组成,浮点型可以用科学计数法表示。
complex:复数可以由实部和虚部构成。
B、 字符串
字符串是python中最常用的数据类型,是不可变数据类型,可以使用单引号或双引号包住来表示。支持切片操作。
C、 列表
列表是python中的基础数据类型,是可变数据类型,使用方括号将元素包裹,使用逗号将元素分割。支持切片操作。
Python的列表生成式是一个非常方便的用法。
D、 元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组是不可变数据类型。支持切片操作。
E、 字典
字典是python中唯一的映射类型,采用键值对的方式储存数据,字典的键必须是不可变数据类型。
总结一下:
不可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。
可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。
二、 迭代器与生成器
A、 迭代器
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。
两种方法创建一个迭代器对象:1、对于可迭代对象(列表、字符串、元组),使用iter()方法进行将一个可迭代数据类型用于创建迭代器。2、使用“元组生成式”,创建可迭代对象。
两种方法返回迭代器中的元素:1、next()方法,每次调用依次返回迭代器中的元素。如果迭代器中没有元素,会报错。2、使用for循环取出元素。
B、 生成器
在Python中,使用了yield的函数被称为生成器。简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield时函数会暂停并保存当前所有的运行信息,返回yield的值,并在下一次执行next()方法时从当前位置继续运行。
同样,生成器也可以使用for循环进行调用。
三、 条件语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
Python中用elif代替了else if,所以if语句的关键字为:if–elif–else。其中if和elif后面要跟上条件,如果满足条件执行代码块,执行代码;如果都不满足,执行else后的代码块。
四、 循环语句
Python中的循环语句有for和while。
break 语句可以跳出for和while的循环体。如果你从 for或 while 循环中终止,任何对应的循环 else 块将不执行。
continue语句被用来跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
五、 函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。
对于列表、字典、字符串等数据类型,python提供了很多的内建函数,这里对这些常用函数做一个说明:
列表的函数:
字符串的函数:
字典的函数:
除了Python内置的函数,还可以设计自定义函数。
六、 文件操作
Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 异常。
使用open()方法一定要保证关闭文件对象,即调用close()方法。
open方法的常用两个参数有file(文件路径),mode(读写文件的方式)。常用的mode方式有:
一般使用with结构。使用with结构的好处是不用在每次打开文件后再进行关闭操作。
python返回迭代器和返回列表有什么区别?
Python中生成器能做到迭代器能做的所有事,而且因为自动创建了__iter__()和next()方法,生成器显得特别简洁,而且生成器也是高效的,使用生成器表达式取代列表解析,同时节省内存。除了创建和保持程序状态的自动生成,当发生器终结时,还会自动跑出StopIterration异常。
列表、元组、字典、字符串都是可迭代对象。
数字、布尔值都是不可迭代的。
下面分别来说说这两者的具体区别:
1、迭代器
迭代器对象要求支持迭代器协议的对象。在Python中,支持迭代器协议就是实现对象的__iter__()和next()方法。其中__iter__()方法返回迭代器对象本身;next()方法返回容器的下一个元素,在结尾时引发StopIteration异常。
下面用个简单的列表来说迭代器的用法:
看完上面代码,我想很多人纳闷列表怎么可以有一个迭代器。由于面试题篇幅有限,大家如果想了解可迭代对象怎么可以获取迭代器呢?
2、生成器
生成器(generator)就是一个函数,它提供了一种实现迭代器协议的便捷方式。生成器与普通函数的区别在于它包含 yield 表达式,并且不需要定义 __iter__()和__next__()。
生成器是一种惰性的序列,如果我们需要创建一个 0~1000000000 的序列,这样大的序列创建出来会占用比较多的内存,生成器就是为了解决这样的问题 。
下面用个简单的例子来说生成器的用法:
如果对于有不认同的意见,大家可以在关注我指出和补充,欢迎留言。
python迭代器是一种机制;列表是一种数据结构。
迭代模式提供一种顺序访问容器对象中各个元素的方法,而又不需要暴露该对象的内部实现。迭代器(Iterator)是按照一定的顺序对一个或多个容器中的元素从前往后遍历的一种机制,如对数组的遍历就是一种迭代遍历。Python 是一种简洁明了的语言,迭代器已经融入其语言本身的特性了,Python 中的 for 循环本身就是一个迭代的过程,也是最简单易用的迭代方式。