Python:从空列表中弹出

Kar*_*vy1 9 python python-2.7

我在代码中的循环中使用下面的行

importer = exporterslist.pop(0)
Run Code Online (Sandbox Code Playgroud)

如果exporterslist没有条目,或者它是null,则返回error: IndexError: pop from empty list.如何在没有条目的情况下绕过exporterslist?

我能想到的一个想法是,如果exporterslist不为null,则importer = exporterslist.pop(0) 获取循环中的下一个条目.如果想法是正确的,如何在python中编码?

Nig*_*een 12

你走在正确的轨道上.

if exporterslist: #if empty_list will evaluate as false.
    importer = exporterslist.pop(0)
else:
    #Get next entry? Do something else?
Run Code Online (Sandbox Code Playgroud)

  • 不!你不需要 `else` 子句,你不必使用它。 (3认同)

Pad*_*ham 10

您也可以使用 try/except

try:
    importer = exporterslist.pop(0)
except IndexError as e:
    print(e)
Run Code Online (Sandbox Code Playgroud)

如果您总是从前面弹出,您可能会发现deque是更好的选择,因为 deque.popleft() 是 0(1)


Ger*_*y M 5

这个..

exporterslist.pop(0) if exporterslist else False

..有点和@nightshadequeen的简短答案相同:

>>> exporterslist = []   
>>> exporterslist.pop(0) if exporterslist else False   
False
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用此方法根本不获得任何回报:

exporterslist.pop(0) if exporterslist else None

>>> exporterslist = [] 
>>> exporterslist.pop(0) if exporterslist else None
>>> 
Run Code Online (Sandbox Code Playgroud)