在对象列表上的位置列表修改

时间:2014-09-28 04:47:58

标签: python

Stack folks,

我试图完成客户购买自行车的项目。客户和可用的自行车(库存)都在列表中。我遇到的是在购买自行车时更新库存清单。自行车和客户是对象。

我的问题是,一旦我找到了客户可以购买的自行车,我该如何修改库存清单,以便后续客户在购买时不评估这一点(因为客户在购买自行车之前)?

这是我到目前为止所拥有的。

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 个答案:

答案 0 :(得分: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)