【问题标题】:PYTHON get the last item of a list even if emptyPYTHON 获取列表的最后一项,即使为空
【发布时间】:2017-03-11 22:13:08
【问题描述】:

我的 Python 脚本打开 2 threading.Threads() 并具有以下功能:

  1. Stuff() :如果事情发生在一个大循环中,则函数将内容附加到 list(全局变量)。
  2. Monitor() :函数显示每秒添加到 list 的最后一个项目以及附加信息。

这两个线程的目的是Stuff() 包含一个优化为非常快的循环(~ 200 毫秒/迭代),因此从内部打印将毫无意义。 Monitor()负责输出。

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

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

【问题讨论】:

    标签: python multithreading list get append


    【解决方案1】:

    我觉得这比@Alex 的回答更具可读性

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

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

    【讨论】:

      【解决方案2】:

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

      (list or [None])[-1]

      【讨论】:

      • 出于打印目的,它将完成这项工作。谢谢!
      • 注意:顺序很重要:如果你这样做([None] or list)[-1]就不行了。
      猜你喜欢
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多