python - itertools.chain 链接一个 iter 列表?

标签 python python-itertools chain

import itertools
def _yield_sample():
    it = iter(itertools.combinations('ABCD', 2))
    it2 = iter(itertools.combinations('EFGH', 3))
    itc = itertools.chain(it,it2)
    for x in itc:
        yield x

def main():
    for x in _yield_sample():
        print x

这可以打印组合。

>>> 
('A', 'B')
('A', 'C')
('A', 'D')
...

但是这个:

def __position_combination(_count = [2,3,4,5]):
    its = []
    for ct in _count:
        it = iter(itertools.combinations('ABCDEFG', ct))
        its.append(it)
    itc = itertools.chain(its)
    for x in itc:
        yield x

def main():
    for x in __position_combination():
        print x

不会,会打印出来

>>> 
<itertools.combinations object at 0x02179210>
<itertools.combinations object at 0x02179240>
<itertools.combinations object at 0x02179270>

我必须重写代码以使其按要求工作。

itc = itertools.chain(*its)

这是我的问题:

itertools.chain(iter, iter, iter)  vs    itertools.chain(*[iter,iter,iter])

它们有什么区别?根据documentation itertools.chain 做:

def chain(*iterables):
    # chain('ABC', 'DEF') --> A B C D E F
    for it in iterables:
        for element in it:
            yield element

那么,为什么 itertools.chain(iter, iter, iter) 也可以在这里工作?
这是否意味着 iter, iter, iter = *(iter, iter, iter)

最佳答案

关于python - itertools.chain 链接一个 iter 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5229188/

相关文章:

android parcelable 引用另一个 parcelable 循环依赖

python - 在 Python 脚本中创建 virtualenv 并在该环境中运行其余部分

python - Pandas 列到数组

django - Celery:从任务中撤销整个链的干净方式

javascript - 如何获取lodash链中的集合?

Python:两个列表上的每个可能的离散函数

python - Python异常: ConnectionError 10054 An existing connection was forcibly closed by the remote host

一直有效的Python文件突然出现json.decoder.JSONDecodeError : Expecting value: line 1 column 1 (char 0)

Python itertools - 只创建所有可能产品的一个子集

python - 为什么我无法获取 itertool.product 中的长度? Python 3.6