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.