我想要这样的东西,有人可以帮我吗?
some_function([1,2],3):
print([1,1,1])
`print([1,1,2])`
print([1,2,1])
print([2,1,1])
print([1,2,2])
print([2,1,2])
print([2,2,1])
`print([2,2,2]) `
答案 0 :(得分:3)
我将这个问题解释为“我如何编写一个可以赋予[1,2]和3的函数,并取回具有该长度的那些元素的所有组合?例如(1、1、1) ,(1、1、2),(1、2、1),(1、2、2),(2、1、1),(2、1、2),(2、2、1),( 2,2,2)”。您可以使用Documentation:
>>> import itertools
>>> list(itertools.product([1,2], repeat=3))
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2), (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]
如果出于某种原因而不想导入模块来完成此操作,则文档方便地提供了仅需要内置函数的实现:
def product(*args, repeat=1):
# product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
# product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
pools = [tuple(pool) for pool in args] * repeat
result = [[]]
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
yield tuple(prod)