2016-06-03 2 views
3

시간 복잡도에 차이가 있습니까? 아니면 그들은 같은가요? 임 (파이썬 3.5)을 말하기 어려움이 두 가지 목록 탐색 방식간에 시간의 복잡성 차이가 있습니까?

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] 

나는 잠재적으로 사소한 질문에 대해 미리 사과한다. 저는 학생이고 공부를 계속하면서 통찰력이 아주 좋습니다.

답변

5

점근 적 시간 복잡도의 관점에서 볼 때, 이들은 동일합니다.

두 방법 모두 목록의 각 요소에 대해 일정한 사전 액세스 (평균 일정 시간)가 필요하므로 두 가지 모두에 대해 O(n)입니다.

비록 상수에 대해 신경 쓰면 통역하기가 어려울 수 있으며 다른 통역사에 따라 다를 수 있으므로 다른 것들을 최적화 할 수 있습니다. 이론적 복잡성 옆에

+0

내가 물어볼 수 있다면 어떻게 동일하다고 말할 수 있습니까? 나는 공식적으로 이유를 설명 할 수 없다. 그러나 두 번째 것은리스트를 두 번 반복하기 때문에 "더 길다"는 것 같습니다. – AlanSTACK

+3

@Alan 점근 적 시간 복잡성의 관점에서 보면, 'O (n) = O (2 * n)'입니다. – amit

2

, 당신은 당신이 원하는 경우를 시간이나 %timeit

첫 번째 방법은 사용을 할 ipython를 사용할 수 있습니다 10 loops, best of 3: 58.2 ms per loop

초 방법 : 10 loops, best of 3: 56.3 ms per loop

그들은 매우 가까운이되고 더 큰 데이터 세트로 검사했다.

관련 문제