2016-10-29 44 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] 

编辑:虽然必须承认,这是第一次我遇到过这种用法。总是认为这些表达式返回布尔类型:)

相关问题