Question :
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?
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?
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
>>>
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)
.
Answer #4:
Use this:
if exporterslist:
importer = exporterslist.pop(0)
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()