2016-12-06 78 views
0

我想通過循環創建一個對象列表(從一個早先定義的類)。該結構看起來是這樣的:並行迭代幾個集合

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) 

但是我想多了一個屬性添加到公司對象(stock_object)通過循環。該屬性將是另一個列表中的值,例如(任意數字)[5,10,20],其中第一個屬性將轉到第一個對象,第二個屬性轉到第二個對象等。是否可以執行如下操作:

for i, j in ticker_symbols, list2: 
    #dostuff 

?無法獲得這種嵌套循環來自己工作。感謝任何幫助。

+3

'對於我,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

你的第二個「解決方案」是錯誤的。 –

+0

@brunodesthuilliers抱歉,這是否工作? – rassar

-2

我相信,你所要做的就是改變for循環。 而不是「我在ticker_symbols:」你應該循環像 「我在範圍內(len(ticker_symbols))」,然後使用索引我做任何你想要的第二個列表。

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不鼓勵使用索引(除非有特定的原因),並且有更好的方法來實現相同的目標。 –