我推理的缺陷在哪裏?根據我的理解,yield的作用類似於返回生成器以繼續迭代的return語句。我期待代碼繼續添加到列表中,但我得到一個錯誤。收益率連接清單
def method(self):
samplelist = []
while(condition):
#the data is collected
samplelist = data
yield samplelist
finalList += file.method()
編輯: 我最初的錯誤是由於試圖以連接finalList使用+ =時,它沒有一個初始值。這是通過使用finalList.append()解決的,但是,yield仍然無法正常工作,如果有人能夠幫助我理解原因,我將非常感激。
有一個相當有用的答案發布,然後刪除出於某種原因。但它解釋說,產量實際上正在返回一個發電機對象。從這我嘗試了幾個不同的東西。
1他們還建議使用list(file.method())來遍歷它。但是,這進一步將finalList的類型更改爲元組,並且與我的其他代碼不兼容。
2我試圖遍歷做
for x in file_writer.write_records():
sample.append(x)
但具有相同的結果的對象。我如何附加發生器對象的值?
什麼錯誤?.... – sshashank124
你的問題是,它的方法被定義後,它可能被調用? – Korem
請注意,'method'的返回值不是一個列表,它是一個生成器對象。如果要訪問已生成的項目,必須使用for循環遍歷它,或者在生成器上調用next,或者將其轉換爲列表。 – Kevin