我在互联网上找不到任何有效的例子,我可以看到它们之间的区别以及为什么要选择一个而不是另一个.
I could not find any valid example on the internet where I can see the difference between them and why to choose one over the other.
第一个接受 0 个或多个参数,每个参数是一个可迭代对象,第二个接受一个预期生成可迭代对象的参数:
The first takes 0 or more arguments, each an iterable, the second one takes one argument which is expected to produce the iterables:
from itertools import chain
chain(list1, list2, list3)
iterables = [list1, list2, list3]
chain.from_iterable(iterables)
但 iterables 可以是任何产生可迭代对象的迭代器:
but iterables can be any iterator that yields the iterables:
def gen_iterables():
for i in range(10):
yield range(i)
itertools.chain.from_iterable(gen_iterables())
使用第二种形式通常是一种方便的情况,但由于它会延迟循环输入可迭代对象,因此它也是链接无限个有限迭代器的唯一方法:
Using the second form is usually a case of convenience, but because it loops over the input iterables lazily, it is also the only way you can chain an infinite number of finite iterators:
def gen_iterables():
while True:
for i in range(5, 10):
yield range(i)
chain.from_iterable(gen_iterables())
上面的例子将给你一个迭代,它产生一个循环的数字模式,它永远不会停止,但永远不会消耗比单个 range() 调用所需更多的内存.
The above example will give you a iterable that yields a cyclic pattern of numbers that will never stop, but will never consume more memory than what a single range() call requires.
这篇关于itertools中chain和chain.from_iterable有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
如何在python中的感兴趣区域周围绘制一个矩形How to draw a rectangle around a region of interest in python(如何在python中的感兴趣区域周围绘制一个矩形)
如何使用 OpenCV 检测和跟踪人员?How can I detect and track people using OpenCV?(如何使用 OpenCV 检测和跟踪人员?)
如何在图像的多个矩形边界框中应用阈值?How to apply threshold within multiple rectangular bounding boxes in an image?(如何在图像的多个矩形边界框中应用阈值?)
如何下载 Coco Dataset 的特定部分?How can I download a specific part of Coco Dataset?(如何下载 Coco Dataset 的特定部分?)
根据文本方向检测图像方向角度Detect image orientation angle based on text direction(根据文本方向检测图像方向角度)
使用 Opencv 检测图像中矩形的中心和角度Detect centre and angle of rectangles in an image using Opencv(使用 Opencv 检测图像中矩形的中心和角度)