# 求和 ***面試重點的題***def add(a, b):
return a + b
# 生成器函式 # 0-3
def test():
for i in range(4):
yield i
g = test() # 獲取生成器 g的取值範圍 0,1,2,3
for n in [2, 10]:
g = (add(n, i) for i in g)
print(list(g))
# for迴圈等價於
# n = 2
# g = (add(n, i) for i in g)
# n = 10
# g = (add(n, i) for i in g) #此時括號裡的g 是n=2 迴圈的時候的g 實際上是g = (add(n, i) for i in (add(n, i) for i in g))
# 當執行到最後一行 list(g)的時候,因為list中的__next__() 會觸發生成器開始取值, 此時的n=10.
# 所以把n=10 帶入g = (add(n, i) for i in (add(n, i) for i in g))
# g = (add(10, i) for i in (add(10, i) for i in g)) g取值範圍 0-3 帶入
# 結果 [20, 21, 22, 23]
面試題 等概率生成器
問題一 已知一隨機發生器,產生0的概率是p,產生1的概率是1 p,現在要你構造乙個發生器,使得它構造0和1的概率均為1 2 構造乙個發生器,使得它構造1 2 3的概率均為1 3 構造乙個發生器,使得它構造1 2 3 n的概率均為1 n,要求複雜度最低。解決方法 原始的隨機數生成器,生成0 的概率為p...
生成器面試題之二
l for i in xrange 10 print ll a for i in xrange 10 a num i print l 輸出結果 python 第一段 解答 以上兩段 的本質區別是第乙個是直接傳物件,第二個是傳物件的引用。第一段 給列表新增,是直接新增字典物件,for迴圈中每次新增的物...
Python面試題之Python生成器
首先說明一下生成器也是迭代器,也有迭代器的那些優點。那為什麼要生成器呢?因為到目前為止都 不是你寫的迭代器,都是別人定義好的。那如何自己去造乙個迭代器呢?下面的內容就會給你答案。想要自己造乙個迭代器,我們可以根據迭代器的特徵 只要乙個物件有 iter 和 next 方法那它就是迭代器 自己定義乙個類...