即使是空的,PYTHON也会得到列表的最后一项

时间:2016-10-29 00:38:51

标签: python multithreading list get append

我的Python脚本使用以下函数打开2 threading.Threads()

  1. Stuff():如果事情发生在一个大循环中,函数会将内容附加到list(全局变量)。
  2. Monitor():功能显示每秒添加到list的最后一项,并附加信息。
  3. 这两个线程的目的是Stuff()包含一个被优化为非常快(~200 ms /迭代)的循环,因此从内部打印将毫无意义。 Monitor()负责输出。

    开始时,我设置list = [],然后启动线程。在Monitor()内,我使用list[-1]获取列表的最后一项,但如果之前没有发生任何事情,则列表仍为空,Monitor()会引发IndexError: list index out of range

    如果列表为空,是否有一种简单的方法(没有tryif not list)来显示None而不是错误?

2 个答案:

答案 0 :(得分:5)

这是一种方式,虽然看起来很奇怪:

(list or [None])[-1]

答案 1 :(得分:0)

我发现这比@ Alex的回答更具可读性

onClick

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