在Python中zip()的时间复杂度是多少?

时间:2016-04-26 23:40:33

标签: python time-complexity

如何计算zip()的时间复杂度?

    testList = [[1,2,3]for _ in range(5)]
    zip(*testList)

1 个答案:

答案 0 :(得分:11)

假设你压缩了N次迭代。

python 3.x 中,zip函数本身在O(1)时间运行,因为它只分配一个特殊的iterable(称为zip对象),并将参数数组赋值给内部领域。函数调用本身(在控件到达zip之前)是O(N),因为解释器必须将参数转换为数组。迭代器上的每个后续next调用也在O(N)中运行。因此,耗尽zip对象是O(N*M),假设M是迭代的平均(或最小)长度,不包括迭代本身生成项目所花费的时间(因为它独立于zip)。

python 2.x 中,zip函数返回一个列表。该列表必须在调用期间构造,这与前一个示例中的迭代器耗尽相当,所以O(N*M),不计算在压缩迭代中花费的时间。