【搜索随机python程序生成器】教程文章相关的互联网学习教程文章

Python:为什么不同的线程从一个生成器获得自己的一系列值?【代码】

我正在学习Python中的多线程.我想知道如何使用生成器向多个线程提供数据.这是我写的:import threadingdata = [i for i in xrange(100)]def generator():for i in data:yield iclass CountThread(threading.Thread):def __init__(self, name):threading.Thread.__init__(self)self.name = namedef run(self):for i in generator():print '{0} {1}'.format(self.name, i)a = CountThread('a')b = CountThread('b')a.start()b.start(...

为什么Python的生成器不是类型?【代码】

问题的简短版本:为什么生成器实例的类型不是创建实例的生成器函数?也就是说,如果我们有一个生成器,比如def G():yield 1和g是由G创建的生成器实例,即g = G(),那么为什么type(g)是G false? 细节: 我最近问了一个关于如何确定给定生成器对象的生成器类型的问题. (见In Python, is there any way to test a generator object to find out which generator created it?.)答案最终要求使用__name__.但是,这仍然给我一个未解答的问题...

暂停Python生成器【代码】

我有一个python生成器,它可以生成大量数据,占用大量内存.有没有办法检测处理过的数据是否已被使用生成器的代码“消耗”,如果是,请暂停直到它被消耗?def multi_grab(urls,proxy=None,ref=None,xpath=False,compress=True,delay=10,pool_size=50,retries=1,http_obj=None):if proxy is not None:proxy = web.ProxyManager(proxy,delay=delay)pool_size = len(pool_size.records)work_pool = pool.Pool(pool_size)partial_grab = par...

Python基础10/生成器/推导式/内置函数

Python基础10/生成器/推导式/内置函数 内容大纲 1.生成器 2.推导式 3.内置函数 1.生成器 迭代器:Python中内置的一种节省空间的工具 生成器的本质就是一个迭代器 迭代器和生成器的区别:一个是Python自带的,一个是程序员自己写的写一个生成器: # def func(): # print(123) # return "你好" # func()# def func(): # if 3>2: # yield "你好" # 停 # if 4>2: # yield "我好" # yield "大家好" # ...

python --- 生成器【代码】

生成器:? 先说一下迭代器:python中内置的一种节省空间的工具 ? 生成器的本质就是一个迭代器 ? 迭代器和生成器的区别:一个是python自己带的,一个是程序员自己写的如何写一个生成器: def func():yield '你好'yield '我好'yield '大家好' a = func() # 产生一个生成器 print(a.__next__()) print(a.__next__()) print(a.__next__()) 结果: 你好 我好 大家好#用for循环也可以 for i in a:print(i) 结果: 你好 我好 大家好...

python_005_while循环,列表的高级操作,生成器的概念,字典

while循环: while循环:适用于明确知道循环结束的条件但是不知道循环次数语法:while 循环条件判断: 循环语句 while循环可以提到for-in遍历,但是for-in遍历不能替代while循环""""""while循环可以替代for-in遍历"""#使用循环完成1-100的所有整数之和sum = 0for i in range(1,101): sum += iprint(sum)# while循环sum = 0index = 1while index < 101: sum += index index += 1print(sum) """for-in遍历无法取代while循...

在Python中从块内停止生成器【代码】

我有一个生成器,从有向无环图(DAG)生成节点,深度优先:def depth_first_search(self):yield self, 0 # rootfor child in self.get_child_nodes():for node, depth in child.depth_first_search():yield node, depth+1我可以像这样遍历节点for node, depth in graph.depth_first_search():# do something如果满足某些条件,我希望能够从for循环告诉生成器停止在图中更深入. 我提出了以下解决方案,它使用外部函数.def depth_first_sea...

python专家的问题:使用生成器调用时代码不起作用【代码】

我有一个小片段,无法以莫名其妙的方式工作.目的是生成两个或更多个序列的所有组合.它在使用列表调用时有效,但在使用生成器调用时不起作用.def comb(seqs):if seqs:for item in seqs[0]:for rest in comb(seqs[1:]):yield [item] + restelse:yield []if __name__=="__main__":x=[1,2]y=[3,4]print list(comb([x,y])) # prints [[1, 3], [1, 4], [2, 3], [2, 4]]def gen1(): yield 1; yield 2def gen2(): yield 3; yield 4x=gen1()y=...

python – break语句发生时的生成器销毁【代码】

我想知道什么时候Obj.del()方法将被称为.def my_integers():Obj = ExitObj()i = 0while(1):yield ii += 1 def test_fun():for i in my_integers():if i > 3:break anything_function() test_fun()我做了一个测试,Obj似乎在break语句之后删除:在anything_function()之前循环. 当循环留给生成器内定义的对象的__ del__方法时,我可以依赖于此并提供一些我想要完成的任务吗?解决方法:I want to know when the Obj.__del__() method ...

python – 什么时候发电机不是发电机?为什么用yield调用我的函数有时不返回生成器对象【代码】

我有一个函数(f)的收益率.我有一个清单(E).如果我尝试E = f(),那么f()不返回生成器对象,而是运行该函数,该函数抛出异常,因为某些全局变量尚未就绪. 为了阻止任何评论,我知道E = f()是错误的,但它为我的问题提供了一个例子.如果我做了正确的事情E = [f()]或E.append(f())那么f()返回一个生成器对象,并且直到生成器对象的下一个方法被调用时才会计算f()的代码.我的问题是,为什么f()在错误的情况下被评估,为什么反而引发的异常不是“函...

python – 如何在循环中从生成器获取三个下一个值的集合【代码】

我有一个问题,因为我无法找到解决问题的方法. gen是一个生成器(difflib.Differ.compare()的结果): 通常通过迭代生成我可以读取每一行.问题是在每次迭代时我需要读取当前行和下两行. 示例(逐行迭代的正常输出):iteration 1:line = 'a' iteration 2:line = 'b' iteration 3:line = 'c' iteration 4:line = 'd' iteration 5:line = 'e' iteration 6:line = 'f' iteration 7: line = 'g'但在我的情况下,我需要得到这个:iteration 1:...

python学习-38迭代器和生成器【代码】

迭代器和生成器- 迭代器协议和for循环工作机制1.迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么引起一个Stoplteration异常,以终止迭代(只能往后走,不能往前走)2.可迭代对象:实现了迭代器的对象(如何实现:对象内部定义一个_iter_()方法)3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如:for循环,sum,min,max函数等)使用迭代器协议访问对象。dic ={a:1,b:2} iter_d=...

Python函数返回列表还是作为生成器工作?【代码】

我正在尝试创建一个返回对象或作为生成器的函数. 这是一个坏主意,因为作为一种最佳实践,您希望函数可靠地返回相同类型的值,但为了科学的利益…… 我正在使用Python 2,因此range返回一个列表,xrange是一个可迭代的(有趣的是它也提供了__len__).def xr(start, stop=None, step=1, gen=True):if stop is None:start, stop = 0, startif gen == True:for i in xrange(start, stop, step):yield ielse:return range(start, stop, step)我...

python – 从元组列表传递参数的zip生成器【代码】

我有一个功能:def func(i, k):j = 0while True:yield j * i + kj += 1还有一些i和k实例:pars = [(2, 4), (1, 5), (7, 2)]如何在不知道pars的长度的情况下压缩pars的func?像这样:for func_tups in zip(func(2, 4), func(1, 5), func(7, 2)):print func_tups我想象地图,拉链,lambda,*的一些组合?解决方法:您正在寻找itertools.starmap():from itertools import starmapfor func_tups in zip(*starmap(func, pairs)):# warning,...

有没有另一种方法在python生成器上调用next?【代码】

我有一个发电机,我想知道我是否可以使用它而不必担心StopIteration,我想在没有发电机的for项目的情况下使用它.我想将它与while语句(或其他构造)一起使用.我怎么能这样做?解决方法:用它来包裹你的发电机:class GeneratorWrap(object):def __init__(self, generator):self.generator = generatordef __iter__(self):return selfdef next(self):for o in self.generator:return oraise StopIteration # If you don't care about the...