我想将生成器设计为gen(num):
这个想法是生成一个数字序列。例如num=3
,则序列将为(1,2,3,2,1,2,3,2,1.....)
。如果为num=4
,则序列为(1,2,3,4,3,2,1,2,3,4,3,2,1,....)
def gen(num)
以及如何在for循环中使用此生成器?
例如
a = [1,2,3,4,5]
b = gen(10)
for item in a:
a+next(b)
最好使用next(b)
还是我们有更好的解决方案?
答案 0 :(得分:0)
def gen(n):
c, i = 1, -1
while True:
if c in (1, n):
i *= -1
yield c
c += i
a = [1,2,3,4,5,6,7,8,9,10]
b = gen(3)
for va, vb in zip(a, b):
print('{}\t{}\t{}'.format(va, vb, va + vb))
打印:
1 1 2
2 2 4
3 3 6
4 2 6
5 1 6
6 2 8
7 3 10
8 2 10
9 1 10
10 2 12
更新:带有itertools.cycle
的生成器版本:
from itertools import cycle
gen = lambda n: cycle([*range(1, n+1)] + [*range(n-1, 1, -1)])