Python的Iterator可以同时打印信息
Updated: May 12, 2020 5:58 PM
今天看到一个Python Iterator的高级用法,之前并不知道,孤陋寡闻了。
def my_gen():
for i in range(10):
print(f"This is {i}")
yield i
上面这个iterator会在每次循环过程中打印信息,但是返回值依然是i。
也就是说,
b = np.linspace(0, 100, num=10)
a = my_gen()
for i in a:
print(b[i])
的输出结果是
This is 0
0.0
This is 1
11.11111111111111
This is 2
22.22222222222222
This is 3
33.33333333333333
This is 4
44.44444444444444
This is 5
55.55555555555556
This is 6
66.66666666666666
This is 7
77.77777777777777
This is 8
88.88888888888889
This is 9
100.0
用于indexing的参数依然是yield i
中的i
,与附加的打印操作无关。这样的iterator特别适合有verbose
的情况,可以一般循环一边打印进度。