1. 背景
在看量子线路的简单示例时(用 Python 写个玩具级量子计算机 (1) - 知乎),发现生成希尔伯特空间的简单代码,
def hilbert_space(nbit=5):
nspace = 2**nbit
for i in range(nspace):
#bin(7) = 0b100
binary = bin(i)[2:]
nzeros = nbit - len(binary)
yield '0'*nzeros + binary
for mi in hilbert_space(nbit=3):
print(mi, end=',')
这个代码相对于我之前自己写的丑陋的代码来说,简直可以说是漂亮了。这里面的 yield 函数用的很好,可以参考学习一下。
2. yield 用法
yield 的使用参照的这篇博文,
一言以蔽之:yield 可以相当于 return 在执行时返回值,同时,用 next() 函数调用到的对象中含有 yield 时,其会从上次终止的地方继续下一次循环,直至遇到 yield (相当于暂停键,循环中遇到 yield 暂停,next 或者调用时就继续开始)。
这个函数优点是不占内存,并起到一个循环过程,且在循环中每一步的数值都能用到。