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

2024-04-23 10:43:23 发布

您现在位置:Python中文网/ 问答频道 /正文

伙计们

我想完成一个客户购买自行车的项目。客户和可用的自行车(库存)都在列表中。我遇到的是更新库存清单时,自行车是购买。自行车和顾客都是实物。你知道吗

我的问题是,一旦我找到一个客户可以购买的自行车,我如何修改库存清单,使任何下列客户在购买时都不会对此进行评估(因为他们之前购买过自行车的客户)?你知道吗

这是我目前掌握的情况。你知道吗

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]

但我得到一个索引或范围错误时使用这个。你知道吗

非常感谢您的帮助


Tags: infor客户lenif库存自行车range
1条回答
网友
1楼 · 发布于 2024-04-23 10:43:23

我猜这是因为你删除了一些东西,然后使用相同的索引来访问该项目的信息(这是危险的)。我可以跳过循环中已删除的项,或者删除它们并使用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)

相关问题 更多 >