Skip to main content
 首页 » 编程设计

python之将列表切片到给定元素

2025年05月04日15qlqwjy

如果你有一个列表 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)(根据 this source ),这意味着它取决于切片的大小。

所以在最坏的情况下,您要查找的元素位于列表的末尾,因此您的搜索将运行到列表的末尾 (O(n)) 并且切片将复制整个列表(也是 O(n)),导致最坏情况下的 O(2n) 仍然是线性复杂度。