简体   繁体   中英

Python - While-Loop until list is empty

I'm working with Django and I have a queryset of objects that has been converted to a list ( unpaid_sales ). I'm executing a process that iterates through this list and operates on each item until either the list is empty, or a given integer ( bucket ) reaches zero.

This is how I set it up:

while unpaid_sales:
    while bucket > 0:
        unpaid_sale = unpaid_sales.pop(0)
        ...do stuff

In some cases, I am getting the following error:

pop from empty list

What's wrong with my logic?

Do not use separate while loops. Do as follows :

while unpaid_sales and bucket > 0 :
    unpaid_sale = unpaid_sales.pop(0)
    ...do stuff

Your end criteria must be formulated a little differently: loop while there are items and the bucket is positive. or is not the right operation here.

while unpaid_sales and bucket > 0
    unpaid_sale = unpaid_sales.pop(0)
    #do stuff

You should do a single loop: while bucket>0 and unpaid_sales . Here, you are popping elements in the bucket loop, and then just just check that bucket is positive, but you do not check that element_sales still has elements in it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM