2016-10-30 152 views
0

與循環功能的結果,這可能是一個很基本的問題,我必須存儲的結果在一個可變環,但不知何故,這似乎並沒有工作:存儲在一個變量

import ystockquote 
import numpy as np 

我定義的股票

df = pd.DataFrame(np.array(['OXLC','CG','NYMT', 'MMLP','CMFN','PNNT']), columns=['Ticker']) 

我使用一個循環來獲得這些股票的紅利的載體:

def func1(df): 
    for x in df['Ticker']: 
     return ystockquote.get_dividend_per_share(x) 

我存儲在變量「分紅」的作用的結果,但由於某種原因在變量分紅我只能找到第一股的出現在向量分紅:

dividends = func1(df) 
print(dividends) 

沒有人理解爲什麼會這樣?

+0

我是正確,你的for循環只運行一次?你會發現return語句會馬上退出for循環。 – johnII

+0

該死的,所以錯誤是在循環中嗎?我該如何改正它? –

+0

請查看@smarx的回答 – johnII

回答

0

return立即從函數返回。因此,循環的第一次迭代正在發生,但只要達到return語句,它就會返回該值。一個解決辦法是收集了你的結果列表中,然後返回:

def func1(df): 
    results = [] 
    for x in df['Ticker']: 
     results.append(ystockquote.get_dividend_per_share(x)) 
    return results 

對於這個簡單的循環,你可能會考慮列表理解來代替:

def func1(df): 
    return [ystockquote.get_divident_per_share(x) for x in df['Ticker']] 
+0

非常感謝,這是完美的 –