2016-03-08 48 views
0

我正在用Python編寫一個程序,它返回/檢索給定列表中的所有相鄰元素。所以,我開發了兩個功能:發電機v/s返回列表 - Python

一個存儲所有這樣的相鄰值在列表中,並返回列表:

def ret_adj(data): 
#adjs = [] 
visited = [] 
for i in data: 

    if i in visited: 
     #adjs.append(i) 
     yield i 
    else: 
     visited.append(i) 
    if data[data.index(i)+1] != i: 
     del visited[:] 

#return adjs 

,另一種產生的值:

if i in visited: 
     #adjs.append(i) 
     yield i 
    else: 
     visited.append(i) 
    if data[data.index(i)+1] != i: 
     del visited[:] 

所以我的問題基本上是,哪種方法更高效?將所有值作爲列表返回,還是讓它們出現?

+0

這些方法都不使用'return'。 – Kevin

+2

您正在使用'visited = []'的方式應該使用**'set' **。 –

回答

1

通常,generator會更有效率,特別是對於大型數據集。另一方面,如果您通常的處理數據的方法是立即將generator轉換爲list,那麼您最好先返回列表。