我目前正在做Problem Solving with Algorithms and Data Structures
所以我在第三个问题上进行编程练习,因为它描述了一个比较列表和词典上del运算符性能的实验。
以下是我方的解决方案:
3)设计一个实验,比较列表和词典上
del
运算符的性能。
def listitems(lis):
del(lis[16])
return lis
def time_taken(n):
start_time = time.time()
result = n
end_time = time.time()
return end_time - start_time, result
print time_taken(listitems([1,2,3,5,4,5,6,5,4,8,5,2,4,5,2,6,3,5,12,4,2,5,2,4,[1,5,4,5,4,54,5,5,6,4,5,[2,4,5,5,1,2,5]]]))
def dictionary(dic):
del(dic["Topic"])
return dic
def time_taken(n):
start_time = time.time()
result = n
end_time = time.time()
return end_time - start_time, result
print time_taken(dictionary({"Name": "Pradeep", "Age": 23, "Learning": "Python", "Topic": "Big O Notation"}))
输出:
(0.0, [1, 2, 3, 5, 4, 5, 6, 5, 4, 8, 5, 2, 4, 5, 2, 6, 5, 12, 4, 2, 5, 2, 4, [1, 5, 4, 5, 4, 54, 5, 5, 6, 4, 5, [2, 4, 5, 5, 1, 2, 5]]])
(0.0, {'Age': 23, 'Name': 'Pradeep', 'Learning': 'Python'})
因此根据Big O表示法列表输出时间应与字典输出时间不同
答案 0 :(得分:0)
要检查功能的执行时间,建议使用timeit
您的方法中的问题是,当您致电time_taken(listitems(values))
时,您实际上是先执行listitems
函数,然后将值传递给time_taken
,那么time_taken
做什么它是否显示在result
中存储给定变量所花费的时间,以便获得相同的时间
使用timeit模块:
timeit.timeit('lis = [1,2,3,5,4,5,6,5,4,8,5,2,4,5,2,6,3,5,12,4,2,5,2,4,[1,5,4,5,4,54,5,5,6,4,5,[2,4,5,5,1,2,5]]]; del(lis[16])', number=10000)
Out[41]: 0.0182793565268895
timeit.timeit('dic = {"Name": "Pradeep", "Age": 23, "Learning": "Python", "Topic": "Big O Notation"}; del(dic["Topic"])', number=10000)
Out[42]: 0.006386155956171535
因此很清楚,对{2}的del
操作比列表
答案 1 :(得分:0)
以下是我执行的方式。结果显示字典上的del操作比列表中的更快。 代码非常明显。
{{1}}