2016-10-30 4 views
0

Dies ist wahrscheinlich eine sehr einfache Frage, ich habe in einer Variablen, die Ergebnisse eines for-Schleife zu speichern, aber irgendwie scheint nicht zu funktionieren:Shop das Ergebnis einer Funktion mit Schleife in einer Variablen

import ystockquote 
import numpy as np 

definiere ich einen Vektor von Aktien

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

ich eine Schleife verwenden, um die Dividenden dieser Bestände zu erhalten:

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

Ich speichere das Ergebnis der Funktion in der Variable „Dividenden“, aber aus irgendeinem Grunde in den variablen Dividenden nur ich die Dividende des ersten Lagers in dem Vektor erscheinen finden:

dividends = func1(df) 
print(dividends) 

Hat jemand verstehen, warum dies geschieht ?

+0

Bin ich richtig, dass Ihre for-Schleife läuft nur einmal? Sie sehen, dass die return-Anweisung sofort Ihre for-Schleife beendet. – johnII

+0

Verdammt, so ist der Fehler in der Schleife richtig? Wie korrigiere ich es? –

+0

überprüfen Sie bitte die Antwort von @smarx – johnII

Antwort

0

return kehrt sofort von der Funktion zurück. Die erste Iteration Ihrer Schleife findet also statt, aber sobald Sie die return-Anweisung erreichen, gibt sie diesen Wert zurück. Eine Lösung ist, die Ergebnisse in einer Liste zu sammeln und dann wieder das:

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

Für diesen einfachen einer Schleife, könnte man Liste Verständnis betrachten statt:

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

vielen Dank, das ist perfekt –

Verwandte Themen