首页 > 解决方案 > item_list[-1] 的更多 Pythonic 方式!= item_list[-2]?

问题描述

我正在更新,然后参考添加到列表中的最后一项以确定结果,例如:

if item_list[-1] != item_list[-2]:
   outcome1

我不需要引用任何其他列表元素,只需 item_list[-1] 和 [-2]。有没有更蟒蛇的方式来做到这一点?此代码适用于使用websockets的 on_message ,并且 item_list 每秒或每分钟更新一次。这个新手编码员将不胜感激任何建议!

标签: pythonlist

解决方案


您可以使用类似的技巧*rest, x, y = item_list然后进行比较,但我认为您的方法很棒。

有时没有必要为您已经拥有一个很好的方法的东西追逐“更pythonic”的方法。但是,我确实鼓励并喜欢您尝试变得更好的尝试。保持!

如果您询问效率 - 您的方法可能是最好的。


根据您在评论中的思考:

只是为了让您了解它的速度有多快,它是纳秒级的,无论长度如何,速度都是一样的,这是一个基准:

> py -m timeit -s "a = list(range(10_000))" "a[-1]"
2000000 loops, best of 5: 73.3 nsec per loop

> py -m timeit -s "a = list(range(100_000))" "a[-1]"
5000000 loops, best of 5: 74.5 nsec per loop

> py -m timeit -s "a = list(range(1_000_000))" "a[-1]"
5000000 loops, best of 5: 69.6 nsec per loop

我认为每秒超过 100 亿次查找(在我 2009 年的旧计算机上)已经足够快了 ;-)


推荐阅读