从容器.可迭代对象谈起 所有的容器都是可迭代的(iterable),迭代器提供了一个next方法.iter()返回一个迭代器,通过next()函数可以实现遍历. def is_iterable(param): try: iter(param) return True except TypeError: return False params = [ 1234, ', [1, 2, 3, 4], set([1, 2, 3, 4]), {1:1, 2:2, 3:3, 4:4}, (1, 2, 3,…
一.何谓迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration).迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值. l=[1,2,3] count=0 while count < len(l): #迭代 print(l[count]) count+=1 在Python中,迭代是通过for ... in来完成的, 对于字典这种数据类型,默认情况下,dict迭代的是key.如果要迭代v…
练习 杨辉三角定义如下: 1 / \ 1 1 / \ / \ 1 2 1 / \ / \ / \ 1 3 3 1 / \ / \ / \ / \ 1 4 6 4 1 / \ / \ / \ / \ / \ 1 5 10 10 5 1 把每一行看做一个list,试写一个generator,不断输出下一行的list: def triangles(): list = [1] while list: yield list newlist = list.copy()#进行一次深复制 for i in ra…
列表/元组/字典/集合都是容器.对于容器,可以很直观地想象成多个元素在一起的单元:而不同容器的区别,正是在于内部数据结构的实现方法. 所有的容器都是可迭代的(iterable).另外字符串也可以被迭代. 迭代器类比 迭代可以想象成是你去买苹果,卖家并不告诉你他有多少库存.这样,每次你都需要告诉卖家,你要一个苹果,然后卖家采取行为:要么给你拿一个苹果:要么告诉你,苹果已经卖完了.你并不需要知道,卖家在仓库是怎么摆放苹果的. 严谨地说,迭代器(iterator)提供了一个 next(可以不重复不遗漏…
可迭代对象 Python中任意的对象,只要它定义了可以返回一个迭代器的__iter__方法,或者定义了可以支持下标索引的__getitem__方法,那么它就是一个可迭代对象.简单来说,可迭代对象就是能提供迭代器的任意对象,但可迭代对象本身并不一定是一个迭代器. 迭代器 任意对象,只要定义了next(Python2) 或者__next__方法,它就是一个迭代器.迭代完毕后继续调用__next__方法会产生一个StopIteration异常.for循环即通过自动捕捉这个异常来停止迭代的. 相关内置函…
迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的generator function. 这些可以直接作用于for循环的对象统称为可迭代对象:Iterable.可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator. 注意:在Python3中,next(Iterator)实际上调用的是Iterator.__next__(),在表…
一.迭代器 1.可循环的有哪些,即可用for语句或者while语句的数据类型有哪些? 字符串(str).列表(list).元组(tuple).字典(dic).集合(set).枚举类(enumerate) 还有哪些非数据类型,但是可以循环的? range(10), 文件句柄:f = open('filename',mode='r',enconding='utf-8') 2.查看这些可循环的数据类型或者函数或者文件句柄 都有哪些共同的东西:(求交集,想到集合(set)的操作了). 还要引入一个内置函…
  生成器 生成器是生成一个值的特殊函数,它具有这样的特点:第一次执行该函数时,先从头按顺序执行,在碰到yield关键字时该函数会暂停执行该函数后续的代码,并且返回一个值:在下一次调用该函数执行时,程序将从上一次暂停的位置继续往下执行. 通过一个例子来理解生成器的执行过程.求1-10的所有整数的立方并将结果打印输出,正常使用列表的实现如下: 输出结果如下: 当数据量很少时,可以很快得到结果.但是如果范围扩大到10000甚至是100000000,就会发现程序执行时间会变长,变卡,甚至有可能会因超出…
一.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束.迭代器只能往前不会后退. 1. 迭代器优点 对于无法随机访问的数据结构(比如set)而言,迭代器是唯一的访问元素的方式.本质:迭代器就是生成一个有next()方法的对象,而不是通过索引来计数. 不要求事先准备好整个迭代过程中所有的元素.迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁.这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的…
Python进阶(四)----生成器.列表推导式.生成器推导式.匿名函数和内置函数 一丶生成器 本质: ​ 就是迭代器 生成器产生的方式: ​ 1.生成器函数…