说到list
,我们都知道并喜欢好的旧pop
,它会删除列表中的最后一项并将其返回:
>>> x = range(3)
>>> last_element = x.pop()
>>> last_element
2
>>> x
[0, 1]
但是假设我正在使用一维numpy
array
来保存我的项目,因为我正在做很多元素计算。那么对我来说最有效的方式是pop
?
我当然能做到
>>> import numpy as np
>>> x = np.arange(3)
>>> last_element = x[-1]
>>> x = np.delete(x, -1) # Or x = x[:-1]
>>> last_element
2
>>> x
array([0, 1])
而且,真的,当它归结为它时,这很好。但是我是否缺少一个单行代码来删除最后一项并同时返回它?
我不是要求
>>> last_element, x = x[-1], x[:-1]
我不认为这是一个单行,因为它是由两个不同的操作实现的两个不同的任务。语法糖就是将它全部放在一条线上。这是我做上面已经做过的一种含糖的方式。 (哈,我确信有人会急于把这个作为答案,而且,确实有人有。这个答案相当于我的要求,“去商店比走路更快捷的方式是什么?”有人回答, “走路,但行走得更快。”呃......谢谢。我已经知道如何走路了。)
答案 0 :(得分:3)
numpy
没有这样的衬垫(除非你自己编写)。 numpy
旨在处理固定大小的对象(或更改频率较低的对象)。因此,根据该指标,常规旧python
list
更适合弹出。
对于使用numpy
的元素操作更好,你是对的。您将不得不分析您的代码,看看哪些代码更好,并做出设计决定。