1
你好,謝謝你看我的問題!我最近被引入到了生成器中,並且我閱讀了關於'Python yield關鍵字解釋'的內容。根據我的理解,yield是即時生成的,不能被索引,並且會記住yield命令執行後的剩餘位置(如果我錯了,請糾正我的錯誤,我還是這個新手)。Python:追加一個產生一個列表的函數?
我的問題是爲什麼呢:
from itertools import combinations
x = [['4A'],['5A','5B','5C'],['7A','7B']]
y = list()
for combination in x:
for i in range(1,len(combination)+1):
y.append(list(combinations(combination,i)))
print y # [[('4A',)], [('5A',), ('5B',), ('5C',)],
# [('5A', '5B'), ('5A', '5C'), ('5B', '5C')],
# [('5A', '5B', '5C')], [('7A',), ('7B',)], [('7A', '7B')]]
但是,這並不工作:
from itertools import combinations
x = [['4A'],['5A','5B','5C'],['7A','7B']]
y = list()
for combination in x:
for i in range(1,len(combination)+1):
y.append((combinations(combination,i)))
print y
它產生後直接因爲我追加的組合爲Y那爲什麼當它是以它的工作列表形式附加的,但是當我通常這樣做時,它不會呢?
生成器本身就是一個對象。在第一種情況下,你追加了將'list'構造函數傳遞給'y'列表的結果。然而,在第二種情況下,您將生成器對象本身附加到該列表,而不是從一個列表創建的「列表」。 – martineau