2016-12-06 56 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不鼓励使用索引(除非有特定的原因),并且有更好的方法来实现相同的目标。 –