基于单个值生成一系列数字(坐标)



初始坐标为: (a,b)=(2,3)

(c,d) generate by (a+2,b+2) i.e. (4,5)
(e,f) must be generate by (a+2,b) i.e (4,3)

对于下一个迭代的a and b将是上一步的c and d:即(a,b) =(4,5)然后像这样。

您可以使用发电机(几乎是从描述中翻译的(:

def pattern(a, b):
    yield (a, b)
    while True:
        c, d = (a+2, b+2)
        e, f = (a+2, b)
        yield (c, d)
        yield (e, f)
        a, b = (c, d)

例如:

>>> def pattern(a, b):
...     yield (a, b)
...     while True:
...         c, d = (a+2, b+2)
...         e, f = (a+2, b)
...         yield (c, d)
...         yield (e, f)
...         a, b = (c, d)
... 
>>> g =  pattern(2, 3)
>>> [next(g) for _ in range(10)]
[(2, 3), (4, 5), (4, 3), (6, 7), (6, 5), (8, 9), (8, 7), (10, 11), (10, 9), (12, 13)]

最新更新