gpt4 book ai didi

python - 比较两种获取子列表长度的方法

转载 作者:太空宇宙 更新时间:2023-11-04 07:18:13 25 4
gpt4 key购买 nike

我有两种获取子列表长度的实现。存在显着的性能差异。我想知道为什么。

import time

# list with 100000 integers
with open('IntegerArray.txt') as f:
input_list = [int(x) for x in f.read().splitlines()]

i = 50000

start_1 = time.time()
len(input_list[i:])
print("--- %s seconds --- " % (time.time() - start_1))

start_2 = time.time()
len(input_list) -i
print("--- %s seconds --- " % (time.time() - start_2))

输出:

--- 0.000550985336304 seconds ---
--- 2.14576721191e-06 seconds ---

这是为什么?这是否意味着我必须避免使用第一种方法而始终使用第二种方法?

最佳答案

len(input_list[i:])

这会复制列表从位置 i 到末尾,O(n) 操作(其中 n 中的元素数切片)。然后它询问它的长度是多少:O(1)。所以 O(n) 总体而言。

len(input_list) -i

这只是要求长度 (O(1)) 然后减去(也是 O(1))。所以 O(1) 总体而言。

参见:https://wiki.python.org/moin/TimeComplexity

关于python - 比较两种获取子列表长度的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31767662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com