2015-07-04 90 views
3

我用下面一行在我的代碼的Python:從空列表

importer = exporterslist.pop(0) 

放進一環。如果exporterslist沒有入口,或者是null,它返回error: IndexError: pop from empty list。我怎樣繞過exporterslist沒有條目呢?

我能想到的一個想法是如果exporterslist不爲空然後importer = exporterslist.pop(0) 否則會獲得循環中的下一個條目。 如果這個想法是正確的,如何在python中編寫它?

+0

你是什麼意思「得到循環中的下一入口」是什麼意思? – dlask

回答

8

你在正確的軌道上。

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

是否必須在'if'之後使用'else'? – Karvy1

+1

不!你不需要'else'子句,你不必使用它。 – NightShadeQueen

1

使用此:

if len(exporterslist) != 0: 
    importer = exporterslist.pop(0) 
+2

'如果exporterslist:'會做同樣的工作 –

2

您也可以使用try /除

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

如果你總是從前面突然出現,你可能會發現一個deque一個更好的選擇,因爲雙端隊列.popleft()是0(1)

0

也可以.pop()僅當列表中有物品通過確定如果該列表的長度爲1個或多個:

if len(exporterslist) > 1: 
    importer = exporterslist.pop() 
+1

'如果len(exporterslist)> 0' – rapt

0

這一個..

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 
>>>