【发布时间】:2016-09-17 20:23:48
【问题描述】:
我无法理解我在这里修改的代码有什么不同。第一段就来自python documentation.
def product(*args, **kwds):
pools = map(tuple, args) * kwds.get('repeat', 1)
result = [[]]
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
yield tuple(prod)
我想编写一段非常相似的代码,但对我们何时实际将产品用于参数中的特定元素有条件,所以我想将result = [x+[y] for x in result for y in pool] 行转换为多行,然后我可以使用我的 if声明之类的。这是我所做的,但是当我运行它时,它似乎陷入了无限循环,或者什么......
def Myproduct(*args, **kwds):
pools = map(tuple, args) * kwds.get('repeat', 1)
result = [[]]
for pool in pools:
for x in result:
for y in pool:
result.append(x+[y])
for prod in result:
yield tuple(prod)
我想真正了解这里的区别。我已经阅读并认为我得到了this post,但我仍然没有看到在这种情况下如何正确转换,或者为什么它至少不是相同的转换。提前谢谢你。
【问题讨论】:
标签: python for-loop nested-loops