Python: pop from empty list

Posted on

Question :

Python: pop from empty list

I am using below line in a loop in my code

importer = exporterslist.pop(0)

If exporterslist has no entries or it is null, it returns error: IndexError: pop from empty list. How can I bypass exporterslist with no entries in it?

One idea I can think of is if exporterslist is not null then importer = exporterslist.pop(0)
else get the next entry in the loop.
If the idea is correct, how to code it in python?

Asked By: Karvy1

||

Answer #1:

You’re on the right track.

if exporterslist: #if empty_list will evaluate as false.
    importer = exporterslist.pop(0)
else:
    #Get next entry? Do something else?
Answered By: NightShadeQueen

Answer #2:

This one..

exporterslist.pop(0) if exporterslist else False

..is somewhat the same as the accepted answer of @nightshadequeen’s just shorter:

>>> exporterslist = []   
>>> exporterslist.pop(0) if exporterslist else False   
False

or maybe you could use this to get no return at all:

exporterslist.pop(0) if exporterslist else None

>>> exporterslist = [] 
>>> exporterslist.pop(0) if exporterslist else None
>>> 
Answered By: Gergely M

Answer #3:

You can also use a try/except

try:
    importer = exporterslist.pop(0)
except IndexError as e:
    print(e)

If you are always popping from the front you may find a deque a better option as deque.popleft() is 0(1).

Answered By: Padraic Cunningham

Answer #4:

Use this:

if exporterslist:
    importer = exporterslist.pop(0)
Answered By: Utsav T

Answer #5:

You can also .pop() only if the list has items in it by determining if the length of the list is 1 or more:

if len(exporterslist) > 1:
    importer = exporterslist.pop()
Answered By: Josh Woods

Leave a Reply

Your email address will not be published.