例如,如果您有一个列表,my_list = ['a', 'd', 'e', 'c', 'b', 'f']
并且想要构建一个子列表,其中包含一个给定元素的所有元素my_list_up_to_c = ['a', 'd', 'e']
,那么如何以一种易于扩展的方式来做到这一点?还可以通过使用numpy数组来使其更快吗?
可能会使用最少的代码.index()
(请注意,这将搜索直到所述列表中元素的第一次出现):
>>> my_list = ['a', 'd', 'e', 'c', 'b', 'f']
>>> my_list
['a', 'd', 'e', 'c', 'b', 'f']
>>> my_list[:my_list.index('c')] # excluding the specified element
['a', 'd', 'e']
>>> my_list[:my_list.index('c')+1] # including the specified element
['a', 'd', 'e', 'c']
调用的时间复杂度.index()
为O(n)
,这意味着它最多将在列表中进行一次迭代。列表切片具有复杂性O(k)
(根据此资料),这意味着它取决于切片的大小。
因此,在最坏的情况下,您要查找的元素位于列表的末尾,因此您的搜索将一直运行到列表的末尾(O(n)
),并且分片也会复制整个列表(也为O(n)
),从而导致最坏的情况的O(2n)
这仍然是线性的复杂度。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句