假设我有一个清单[1, 2, 3, 4, 2, 5]
。由于2
发生了两次,因此我想删除最后一次出现的两次。到目前为止,这是我所做的。
list.reverse()
list.remove(value) # value = 2
list.reverse()
但似乎如果我为删除一个值而进行两次反转,则算法复杂度将为O(n)
。有没有更快的方法呢?
if value in list:
list.reverse()
list.remove('ch')
list.reverse()
最pythonic的方式将是try: except
周围删除:
list.reverse()
try:
list.remove(value)
except:
pass
list.reverse()
按照速度您的意见,这两种方法都是O(N),因为x in list
和list.reverse()
都是O(N),所以它们之间没有太多。如果期望元素通常存在,则可以x in list
使用try:catch保存检查,但是,如果期望元素通常不存在,则可以reverse()
通过首先检查成员资格来保存2 s。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句