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?

3

3 Answers

Your end criteria must be formulated a little differently: run the 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
3

Do not use separate whileloops. Do as follows :

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

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Chloe Bennett

Chloe Bennett

Culture, Media & Entertainment Columnist

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.

Share this article
Twitter Facebook Pinterest