我在代码中的循环中使用下面的行
importer = exporterslist.pop(0)
如果
exporterslist
没有条目,则返回 error: IndexError: pop from empty list
。如何绕过其中没有条目的出口商列表?
我能想到的一个想法是,如果 Exporterslist 不是 None 那么
importer = exporterslist.pop(0)
否则获取循环中的下一个条目。
如果这个想法是正确的,如何用Python编写它?
您走在正确的道路上。
if exporterslist: #if empty_list will evaluate as false.
importer = exporterslist.pop(0)
else:
#Get next entry? Do something else?
这个..
exporterslist.pop(0) if exporterslist else False
..与 @nightshadequeen 接受的答案有点相同,只是更短:
>>> exporterslist = []
>>> exporterslist.pop(0) if exporterslist else False
False
或者也许你可以用它来得到根本没有回报:
exporterslist.pop(0) if exporterslist else None
>>> exporterslist = []
>>> exporterslist.pop(0) if exporterslist else None
>>>
更新:
一个更时髦的解决方案,仅适合那些有旅行癖或只是为了好玩的人:
>>> exporterslist = []
>>> importer = exporterslist and exporterslist.pop(0) or False
>>> importer
False
>>> exporterslist = ['a']
>>> importer = exporterslist and exporterslist.pop(0) or False
>>> importer
'a'
您还可以使用 try/ except
try:
importer = exporterslist.pop(0)
except IndexError as e:
print(e)
如果你总是从前面弹出,你可能会发现 deque 是一个更好的选择,因为 deque.popleft() 是
0(1)
。
使用这个:
if exporterslist:
importer = exporterslist.pop(0)
您还可以通过确定列表的长度是否为 1 或更大,仅当列表中有项目时才使用 .pop() :
if len(exporterslist) >= 1: #if the length of the list is equal or higher than one
importer = exporterslist.pop()