首页 > 解决方案 > Python3在每次循环后删除列表中的n个元素

问题描述

我可以一次请求 250 种产品的库存。大约有 7500-8000 种产品,但数量每天都在变化。所以我尝试请求 250 个产品,删除它们并再次执行此操作,直到我的 list(all_sku) 包含少于 250 个项目,所以我知道这是我的最后一个请求。

听起来很简单,但今天有 7697 件商品,但我只获得 7250 件商品的库存。

start_time = time.time()
for i in range(0, 40):
    all_values = []
    time_now = time.time()
    time.sleep(10)
    if time_now - start_time >= 480:
        stock_values = xxx.get_stockforitems(all_sku[:250], session_master)
        all_values.append(stock_values)
        print(len(all_sku), 'before deleting first 250 elements')
        del all_sku[:250]
        print(len(all_sku), 'after deleting first 250 elements')
    else:
        stock_values = xxx.get_stockforitems(all_sku[:250], session_master)
        all_values.append(stock_values)
        print(len(all_sku), 'before deleting first 250 elements')
        del all_sku[:250]
        print(len(all_sku), 'after deleting first 250 elements')
    if len(all_sku) <= 250:
        stock_values = xxx.get_stockforitems(all_sku[:len(all_sku)], session_master)
        all_values.append(stock_values)
        print(len(all_sku), 'values remaining')
        del all_sku[:len(all_sku)]
        print(len(all_sku), 'after deleting elements')
        break

控制台输出:

1187 before deleting first 250 elements
937 after deleting first 250 elements
937 before deleting first 250 elements
687 after deleting first 250 elements
687 before deleting first 250 elements
437 after deleting first 250 elements
437 before deleting first 250 elements
187 after deleting first 250 elements
187 values remaining
0 after deleting elements

可能错误在if < 250条件

这是我第一次使用break语句,也许这是我万恶之源

标签: pythonpython-3.xrest

解决方案


它看起来不错,输出似乎与预期的一样。我的猜测是,也许您没有从get_stockforitems. 我会添加您每次获得多少物品的打印输出。

您的代码存在一些不影响正确性的问题:if 和 else 分支看起来相同。他们为什么在那里?这range(0, 40)似乎是随机的 - 为什么不呢while len(all_sku) > 0:

此外,所有这些删除业务似乎都很混乱,为什么不呢

for i in range(0,len(all_sku),250): 
   batch = all_sku[i:i+250]
   get_stockforitems(batch...

推荐阅读