def yield_and_skip(iterable):
x = iter(iterable)
y = next(x)
while x:
if type(y) == int:
yield y
for i in range(y):
y = next(x)
elif type(y) == str:
yield y
y = next(x)
我正在编写一个以iterable作为参数的生成器:它生成iterable中的每个值,除非它产生一个int n,它不会产生(跳过)下一个n值。
例如,
for i in yield_and_skip([1,2,1,3,'a','b',2,5,'c',1,2,3,8,'x','y','z',2]):
print(i,end=' ')
prints 1 1 a b 2 1 3 z 2.
但不是
1, 1, 'a', 'b', 2, 1, 3, 'z', 2
我的功能打印
1, 2, 3, 2, 'c', 1, 2, 8
有人可以帮我解决吗?提前致谢。
答案 0 :(得分:0)
有两种方法可以解决它,首先是将for循环中的迭代次数增加一:
for i in range(y+1):
。
第二个是在for循环之后将y
重新分配给x
的下一次迭代:
for i in range(y):
y = next(x)
y = next(x)
答案 1 :(得分:0)
只需更改
中范围的限制即可 for i in range(y):
到
for i in range(y + 1):