首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何附加到迭代工具生成器

如何附加到迭代工具生成器
EN

Stack Overflow用户
提问于 2018-02-08 18:59:18
回答 1查看 793关注 0票数 0

在迭代工具迭代器中,是否有一种简单的方法将整数附加到每个项?如果使用itertools.product,则不会收到预期的输出。例如:

代码语言:javascript
复制
>>> for i in itertools.product(itertools.combinations(np.arange(4),2),(4,)): 
...   print(i) 
...    
((0, 1), 4)
((0, 2), 4)
((0, 3), 4)
((1, 2), 4)
((1, 3), 4)
((2, 3), 4)

但我希望(我也希望)是

代码语言:javascript
复制
>>> for i in itertools.product(itertools.combinations(np.arange(4),2),(4,)): 
...   print(i) 
...    
(0, 1, 4)
(0, 2, 4)
(0, 3, 4)
(1, 2, 4)
(1, 3, 4)
(2, 3, 4)

我知道我可以“平缓”输出,但我宁愿构造迭代器来生成元组,而不是元组的元组。

我有许多不同的迭代器,我希望迭代工具迭代器和普通迭代工具迭代器的product代码保持不变。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-08 19:15:42

这两个替代方案各自产生一个迭代器。在第一种情况下,迭代器是由生成器表达式创建的。在第二个过程中,迭代器是通过使用发生器函数创建的。

代码语言:javascript
复制
In [9]: for i in (tup + (4,) for tup in itertools.combinations(np.arange(4),2)):
   ...:     print(i)
   ...:     
(0, 1, 4)
(0, 2, 4)
(0, 3, 4)
(1, 2, 4)
(1, 3, 4)
(2, 3, 4)

In [10]: 

在调用站点上,生成器函数可能更具可读性,特别是当函数名描述其行为时。

代码语言:javascript
复制
import itertools
import numpy as np

def adder(it, addend):
    for x in it:
        yield x + addend

for i in adder(itertools.combinations(np.arange(4),2), (4,)):
    print(i)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48692895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档