所以基本上我想了解itertools中product()函数的概念。我的意思是收益和收益之间有什么不同。无论如何,这个代码可以缩短吗?itertools的产品功能
def product1(*args, **kwds):
pools = map(tuple, args) * kwds.get('repeat', 1)
n = len(pools)
if n == 0:
yield()
return
if any(len(pool) == 0 for pool in pools):
return
indices = [0] * n
yield tuple(pool[i] for pool, i in zip(pools, indices))
while 1:
for i in reversed(range(n)): # right to left
if indices[i] == len(pools[i]) - 1:
continue
indices[i] += 1
for j in range(i+1, n):
indices[j] = 0
yield tuple(pool[i] for pool, i in zip(pools, indices))
break
else:
return
看起来你要我们写一些代码您。尽管许多用户愿意为遇险的编码人员编写代码,但他们通常只在海报已尝试自行解决问题时才提供帮助。展示这一努力的一个好方法是包含迄今为止编写的代码,示例输入(如果有的话),期望的输出以及实际获得的输出(输出,回溯等)。您提供的细节越多,您可能会收到的答案就越多。检查[FAQ](http://stackoverflow.com/tour)和[如何提问](http://stackoverflow.com/questions/how-to-ask)。 – TigerhawkT3
没有'itertools'?然后,我猜是循环时间。你有没有理由不使用'itertools'?或者更像是对自己的挑战? – pwnsauce
1.使用itertools编写代码。 2.转到itertools文档。对于你使用的每个函数,找到“这个函数等价于下面的代码:”块。 3.将这些块复制到您的代码中。 – Kevin