Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中copy()的计时复杂性。如何添加经过的时间?_Python_Python 3.x - Fatal编程技术网

python中copy()的计时复杂性。如何添加经过的时间?

python中copy()的计时复杂性。如何添加经过的时间?,python,python-3.x,Python,Python 3.x,我正在尝试查看copy()复制列表需要多长时间。它应该是O(n),因为copy()一次遍历一个列表项。如何获取“elapsedtime”以跟踪它以前的价值?此代码将经过的时间重置回0。我非常感谢任何帮助修复代码,甚至更多 如果您想获得elapsedtime的所有先前值,请使用以下代码运行时间列表为您保存这些值 import timeit def copytest(): lst = [] for i in range(1000000): lst.append(i) starttime

我正在尝试查看copy()复制列表需要多长时间。它应该是O(n),因为copy()一次遍历一个列表项。如何获取“elapsedtime”以跟踪它以前的价值?此代码将经过的时间重置回0。我非常感谢任何帮助修复代码,甚至更多

如果您想获得
elapsedtime
的所有先前值,请使用以下代码<代码>运行时间列表为您保存这些值

import timeit

def copytest():

lst = []
for i in range(1000000):
    lst.append(i)
starttime = timeit.default_timer()
copiedlst = lst.copy()
endtime = timeit.default_timer()
elapsedtime = endtime - starttime
elapsedtime += elapsedtime
return elapsedtime 

for j in range(1, 100):
    print(j, copytest())

这段代码能够识别复制命令的复杂性。它是O(n),其中n是要复制的元素数。给出的程序基本上每次都复制相同的东西,n不变;因此,每次输出都是恒定的(有一些随机变化,但是平均值是相等的)。

顺便说一句,你的循环相当于
lst=list(范围(1000000))
,但是为什么你一直在
copytest
中重新创建它呢?不管怎样,你为什么不一直把
copytest()
的结果加在一起呢?但你到底为什么要这么做?这并不能说明时间复杂性,您的输入总是相同的。您想累积
elapsedtime
值,还是只想将它们存储在某个可以访问它们的地方?我不知道如何计算复制的时间复杂度抱歉,因此此代码足以检查复制命令的复杂度?是,这就足以检查copy命令的时间复杂度了。它满足你的要求了吗?如果有,请接受并投票。谢谢
import timeit

def copytest():
  lst = []
  for i in range(1000000):
      lst.append(i)
  starttime = timeit.default_timer()
  copiedlst = lst.copy()
  endtime = timeit.default_timer()
  elapsedtime = endtime - starttime
  elapsedtime += elapsedtime
  return elapsedtime 

elapsed_list = []
for j in range(1, 100):
  e = copytest()
  elapsed_list.append(e)
  print(j, copytest())
import timeit
def copytest(n):
    lst = list(range(1000000))*n
    starttime = timeit.default_timer()
    copiedlst = lst.copy()
    endtime = timeit.default_timer()
    elapsedtime = endtime - starttime
    elapsedtime += elapsedtime
    return elapsedtime 
for j in range(1, 100):
    print(j, copytest(j))