用序列填充数组

时间:2018-02-12 15:21:03

标签: python arrays list sequence

我有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,如果真的。

1 个答案:

答案 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)]