知识

如何用迭代器代替while无限循环

千千惠生活 发布于 2019-09-03

你在代码中使用while循环来迭代处理数据,因为它需要调用某个函数或者和一般迭代模式不同的测试条件。能不能用迭代器来重写这个循环呢? 一个常见的IO操作程序可能会想下面这样:CHUNKSIZE= 8192 def reader(s): while True: data= s.re...

阅读(296)赞 (0)

实现顺序迭代合并后的排序迭代对象

千千惠生活 发布于 2019-09-03

你有一系列排序序列,想将它们合并后得到一个排序序列并在上面迭代遍历。 heapq.merge()函数可以帮你解决这个问题。比如:>>> import heapq >>> a=[1, 4, 7, 10]>>> b=[2, 5, ...

阅读(307)赞 (0)

python如何实现数据处理管道问题

千千惠生活 发布于 2019-09-03

如果你想以数据管道(类似Unix管道)的方式迭代处理数据。比如,你有个大量的数据需要处理,但是不能将它们一次性放入内存中。 生成器函数是一个实现管道机制的好办法。为了演示,假定你要处理一个非常大的日志文件目录:foo/ access-log-012007.gz access-lo...

阅读(350)赞 (1)

如何实现在不同集合上元素的迭代问题

千千惠生活 发布于 2019-09-03

你想在多个对象执行相同的操作,但是这些对象在不同的容器中,你希望代码在不失可读性的情况下避免写重复的循环。 itertools.chain()方法可以用来简化这个任务。它接受一个可迭代对象列表作为输入,并返回一个迭代器,有效的屏蔽掉在多个容器中迭代细节。为了演示清楚,考虑下面这个...

阅读(295)赞 (1)

如何实现迭代遍历一个集合中元素的所有可能的排列或组合

千千惠生活 发布于 2019-09-03

itertools模块提供了三个函数来解决这类问题。其中一个是itertools. permutations(),它接受一个集合并产生一个元组序列,每个元组由集合中所有元素的一个可能排列组成。也就是说通过打乱集合中元素排列顺序生成一个元组,比如: >>> ite...

阅读(316)赞 (1)

如何跳过可迭代对象的开始部分

千千惠生活 发布于 2019-09-03

你想遍历一个可迭代对象,但是它开始的某些元素你并不感兴趣,想跳过它们。 itertools模块中有一些函数可以完成这个任务。首先介绍的是itertools. dropwhile()函数。使用时,你给它传递一个函数对象和一个可迭代对象。它会返回一个迭代器对象,丢弃原有序列中直到函数...

阅读(311)赞 (1)