当前位置: 首页 > 面试题库 >

列表切片的Big-O

秦俊友
2023-03-14
问题内容

假设我有一些Python列表,my_list其中包含N个元素。单个元素可以通过使用进行索引my_list[i_1],其中i_1是所需元素的索引。然而,Python列表也可以是索引my_list[i_1:i_2],其中一个从列表中的“片”
i_1,以i_2期望。切片大小为N的列表的Big-O(最坏情况)表示法是什么?

就个人而言,如果我要对“切片器”进行编码,我会从迭代i_1i_2,生成一个新列表并返回它,表示O(N),这是Python的方式吗?

谢谢,


问题答案:

获取切片为O(i_2 - i_1)。这是因为Python的列表内部表示形式是一个数组,因此您可以从开始i_1并迭代到i_2

有关更多信息,请参见Python时间复杂性Wiki条目。

如果需要,您还可以在CPython源代码中查看实现。



 类似资料:
  • 问题内容: 我想要一种算法来遍历列表切片。切片大小在功能之外设置,可以不同。 在我看来,这就像: 有没有一种使用python 2.5正确定义的方法或其他方法? edit1:澄清 “分区”和“滑动窗口”这两个术语听起来都适用于我的任务,但是我不是专家。因此,我将更深入地解释该问题并添加到问题中: FatherList是我从文件中获取的一个多级numpy.array。函数必须找到序列的平均值(用户提供

  • 问题内容: 考虑以下简单的python代码 我们可以按如下方式对该数组进行切片: 有什么办法可以通过向左移动来环绕上述数组 通过简单地使用切片操作? 问题答案: 旋转左元素(或右移负n): 请注意,collections.deque支持旋转。最好使用它而不是列表。

  • 问题内容: 在以下示例中: 其中:将打印foo中的所有元素。但是,将省略第一个或第0个元素。 我了解我可以使用foo.reverse()或foo [::-1]反向打印列表,但是我想了解为什么foo [6:0:-1]不能打印整个列表? 问题答案: 切片符号简而言之: 如果要在反转列表时包括第一个元素,则将中间元素留空,如下所示: 您还可以在这里找到有关Python切片的一些很好的信息: Unders

  • 问题内容: 我有一个清单清单。每个子列表的长度在1到100之间。每个子列表在一组数据中的不同时间包含一个粒子ID。我想在给定的时间形成所有粒子ID的列表。为此,我可以使用以下方法: list2将包含list中每个子列表的首个元素。我不仅要对第一个元素执行此操作,还要对1到100之间的每个元素执行此操作。我的问题是,每个子列表都不存在元素号100(或66或77或其他)。 有什么方法可以创建列表列表,

  • 问题内容: 对于任意长度的子列表,将列表切成切片的子列表节列表的最简单,合理有效的方法是什么? 例如,如果我们的源列表是: 我们的子列表长度为3,然后我们寻求: 同样,如果我们的子列表长度为4,则我们寻求: 问题答案: [input[i:i+n] for i in range(0, len(input), n)] # Use xrange in py2k 块的长度在哪里。 由于您没有定义当不能将中

  • 问题内容: 给出清单 您可以使用诸如 但是,我想基于代码中其他位置设置的变量来执行此操作。我可以很容易地做到这一点 但是,我该如何为另一个做呢?我尝试用列表建立索引: 但这是行不通的。我也尝试过使用字符串: 但这也不起作用。 这可能吗? 问题答案: 那是为了: 与使用相同。