2016-12-06 3 views
0

私はループを介してオブジェクトのリストを(先に定義したクラスから)作成しようとしています。私はしかし、ループを通って会社-オブジェクト(stock_object)に1つのより多くの属性を追加したいと思ういくつかのコレクションを並行して繰り返します。

ticker_symbols = ["AZN", "AAPL", "YHOO"] 
stock_list = [] 
for i in ticker_symbols:                
    stock = Share(i)                   
    pe = stock.get_price_earnings_ratio()            
    ps = stock.get_price_sales()              
stock_object = Company(pe, ps)      
stock_list.append(stock_object) 

:構造は次のようになります。属性は、最初の属性が最初のオブジェクトに、2番目が2番目のオブジェクトなどに行くところの(任意の数値)[5,10,20]のような別のリストの値になります。

for i, j in ticker_symbols, list2: 
    #dostuff 

?このようなネストされたループを自分で動作させることができませんでした。何か助けに感謝します。

+3

'i、j in zip(ticker_symbols、list2):' - これで準備は整いました。 –

答えて

-1

試してみてください。等価的に

for i, j in zip(ticker_symbols, list2): 

それとも

for (k, i) in enumerate(ticker_symbols): 
    j = list2[k] 

for index in range(len(ticker_symbols)): 
    i = ticker_symbols[index] 
    j = list2[index] 
+3

2番目の「解決策」が間違っています。 –

+0

@brunodesthuilliers申し訳ありません、それは動作しますか? – rassar

-2

私はあなたがしなければならないすべては、forループの変更であると信じています。 "for i in ticker_symbols"の代わりに、 のようにループする必要があります(範囲がlen(ticker_symbols))。そして、インデックスiを使用して、2番目のリストで何でもしてください。

ticker_symbols = ["AZN", "AAPL", "YHOO"] 
stock_list = [] 
for i in range(len(ticker_symbols): 
    stock = Share(ticker_symbols[i]) 
    pe = stock.get_price_earnings_ratio() 
    ps = stock.get_price_sales() 
    # And then you can write 
    px = whatever list2[i] 
    stock_object = Company(pe, ps, px) 
    stock_list.append(stock_object) 

インデックスを使用して反復処理を行うのは良い方法ではありませんが、コードが正しく動作しているとは思わないと言う人もいます。

+1

インデックスを反復することは、Pythonでは避けられます(特定の理由がない限り)。同じ目標を達成するためのより良い方法があります。 –

関連する問題