2014-09-28 82 views
1

堆棧夥計在對象列表中的位置列表修改

我正試圖完成一個項目,客戶購買一輛自行車。客戶和自行車(庫存)都在列表中。我遇到的是在購買自行車時更新庫存清單。自行車和顧客是物體。

我的問題是,一旦我找到一輛客戶可以購買的自行車,我該如何修改庫存清單,以便下列任何客戶都不會在購買時對其進行評估(因爲之前的客戶購買了自行車)?

這是我到目前爲止。

print '\nPurchasing' 
print '-' * 20 
for i in range(len(customer_list)): 
    for b in range(len(inventory_list)): 
     if inventory_list[b].shopCost <= customer_list[i].cust_funds: 
      print "{0} ---- {1} --- {2}".format(customer_list[i].cust_name, inventory_list[b].modelName, inventory_list[b].shopCost) 

嘗試代碼:使用此當

if inventory_list[b].shopCost <= customer_list[i].cust_funds and inventory_list[b].soldFlag is False: 
    del inventory_list[b] 

,但我得到一個索引超出範圍或錯誤。

任何幫助是極大的讚賞

+1

,只要將soldFlag到真正的而不是刪除它......一般而言,您應避免添加/從列表中刪除,同時遍歷它 – 2014-09-28 05:07:26

回答

0

我想這是因爲你刪除的東西,然後用來訪問項目的信息相同的索引(這是很危險的)。我怎樣才能跳過循環中刪除的項目,或者刪除它們並使用continue(請參閱下面的示例)。

但也許簡化您的代碼,看看,如果這個工程:

print '\nPurchasing' 
print '-' * 20 
for cust in customer_list: 
    for item in inventory_list: 
     if item.shopCost <= cust.cust_funds 
      if item.soldFlag is False: 
       inventory_list.remove(item) 
       continue 
     if item.shopCost <= cust.cust_funds: 
      print "{0} ---- {1} --- {2}".format(cust.cust_name, item.modelName, item.shopCost)