2014-09-28 79 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)