2016-10-29 77 views
0

我的Python腳本打開2 threading.Threads()具有以下功能:PYTHON獲取列表的最後一個項目,即使空

  1. Stuff():功能附加的東西到list(全局變量),如果東西在一個大循環發生。
  2. Monitor():函數顯示每秒添加到list的最後一項,並附加信息。

這兩個線程的目的是Stuff()包含一個優化非常快(〜200毫秒/迭代)的循環,因此從內部打印將毫無意義。 Monitor()改爲照顧輸出。

開始時,我設置了list = [],然後啓動線程。在Monitor()裏面,我得到list[-1]的列表中的最後一項,但如果以前沒有發生任何事情,列表仍然是空的,並且Monitor()產生了IndexError: list index out of range

如果列表爲空,有沒有簡單的方法(沒有tryif not list)顯示None而不是錯誤?

回答

4

這裏有一個方法,雖然它看起來很奇怪:

(list or [None])[-1]

+0

爲了打印的目的,它將完成這項工作。謝謝 ! –

+0

可愛,謝謝! – user2297550

0

我覺得這是更可讀的比@亞歷克斯的答案

lst = [1, 3, 2] 
print None if not lst else lst[-1] 

編輯:雖然必須承認,這是第一次我遇到過這種用法。總是認爲這些表達式返回布爾類型:)

相關問題