Python 这两种列表遍历方法的时间复杂度有差异吗?

Python 这两种列表遍历方法的时间复杂度有差异吗?,python,algorithm,time-complexity,Python,Algorithm,Time Complexity,时间复杂度有差异吗?或者它们是一样的?我很难分辨(python 3.5) 我为这个问题的潜在琐碎性质提前道歉。我是一名学生,在我继续学习的过程中,非常感谢你的洞察力。就渐近时间复杂性而言,它们是相同的 对于列表中的每个元素,这两种方法都需要恒定的字典访问(平均为恒定的时间),因此这两种方法都需要O(n) 但是,如果您关心常量,则很难判断,并且不同的解释器之间可能会有所不同,这可能会优化不同的内容。除了理论复杂性之外,您还可以根据需要对它们计时,或者使用ipython使用%timeit 第一种方法

时间复杂度有差异吗?或者它们是一样的?我很难分辨(python 3.5)


我为这个问题的潜在琐碎性质提前道歉。我是一名学生,在我继续学习的过程中,非常感谢你的洞察力。

就渐近时间复杂性而言,它们是相同的

对于列表中的每个元素,这两种方法都需要恒定的字典访问(平均为恒定的时间),因此这两种方法都需要
O(n)


但是,如果您关心常量,则很难判断,并且不同的解释器之间可能会有所不同,这可能会优化不同的内容。

除了理论复杂性之外,您还可以根据需要对它们计时,或者使用
ipython
使用
%timeit

第一种方法:
10个循环,最好3个循环:每个循环58.2毫秒

第二种方法:
10个循环,最好3个循环:每个循环56.3毫秒


它们非常接近,需要用更大的数据集进行检查。

如果我可以问的话,你怎么知道它们是一样的?我无法正式解释原因。但第二个似乎“更长”,因为它在列表中迭代twice@Alan就渐近时间复杂度而言,
O(n)=O(2*n)
list_of_dict = [{'name':'alan', 'age':5}, {'name':'alice', 'age':6}]

# first method
names = []
ages  = []
for i in range(len(list_of_dict)):
    names.append(list_of_dict[i]['name'])
    ages.append(list_of_dict[i]['age'])

# second method

names = [x['name'] for x in list_of_dict]
ages  = [x['age'] for x in list_of_dict]