使用z模12中的加法(也就是说,整数mod 12,也就是说,a 0到11):

1 generates [0,1,2,3,4,5,6,7,8,9,10,11]

(从0开始并重复添加1;11+1使我们返回到0)
以同样的方式:
2 generates [0,2,4,6,8,10]
3 generates [0 3 6 9]
9 generates [0,9,6,3] <-- notice order is important

如何在给定特定生成器的情况下创建子组?

最佳答案

我假设你是指加法子群,其中z是整数集。如果需要精确的顺序,只需计算:

def subgroup(n, g):
    x = 0
    while True:
        yield x
        x = (x + g) % n
        if x == 0:
            break

当然,如果顺序不重要,那么
{ G * k for k in xrange((n - 1) // G + 1) }

对于Z * g

关于python - 在Python中,从生成器构造循环子组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24063363/

10-08 22:00