Python的Iterator可以同时打印信息

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的情况,可以一般循环一边打印进度。

原文地址:https://www.cnblogs.com/yaos/p/14014141.html