我有N号,我想制作数量的数量。例如N = 2 我需要
unless egcd(ARGV[3].to_i, 128).first == 1
与(0,0),(0.5,0),(0,0.5),(1,1) ,(1,0.5), (0.5,1)
类似
N=3
包含(0,0,0),(0.5,0,0)...(0.5,0.5,0)....(1,0.5,0.5)...(1,1,1)
的所有组合。
我尝试使用循环,但没有找到解决问题的方法,任何N.I更喜欢python 0, 0.5, 1
或java,如果真的。
答案 0 :(得分:1)
您可以使用itertools.product
生成所有组合。
def f(n):
return list(itertools.product((0, .5, 1), repeat=n))
print(f(2))
# [(0, 0), (0, 0.5), (0, 1), (0.5, 0), (0.5, 0.5), (0.5, 1), (1, 0), (1, 0.5), (1, 1)]
编辑:
如果您只想要相邻元素的组合,我们可以使用pairwise
文档中的itertools
配方。
from itertools import tee, chain, product
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return zip(a, b)
def f(n):
values = (0, .5, 1)
return list(chain.from_iterable(product(x, repeat=n) for x in pairwise(values)))
print(f(n))
# [(0, 0), (0, 0.5), (0.5, 0), (0.5, 0.5), (0.5, 0.5), (0.5, 1), (1, 0.5), (1, 1)]