홍카나의 공부방

[Python] list.append()와 list의 '+' operator 차이 본문

Programming Language/Python

[Python] list.append()와 list의 '+' operator 차이

홍문관카페나무 2023. 4. 16. 13:13

결론부터 이야기하면 겉으로 봐서는 큰 차이가 없다.

 

li = [1,2,3,4,5]에서

li.append(10)을 하면 li는 [1,2,3,4,5,10]이 될테고

위에서 append가 아닌 li = li + [10]을 해도 결과는 li = [1,2,3,4,5,10]이 된다.

 

하지만 list.append() 메소드는 O(1) 시간 복잡도로 동작하며,

리스트의 + 연산은 O(n) 시간으로 동작한다.

 

append는 쉽게 말하면 메모리 공간 하나를 더 할당해서 이어 붙이는 작업만 하므로 상수시간인 O(1)만 소요된다.

li = li + [10] 연산은 우변의 li + [10]을 계산하기 위한 새로운 리스트 객체가 만들어진다. 이후 L2에 대입이 되는데

li를 전부 베껴야하므로 O(N)의 시간이 소요된다.

 

겉으로 봐서는 결과가 큰 차이가 없지만

만약 문제 해결에 두 방법을 모두 사용할 수 있다면 효율성을 고려하여 append()를 사용하자.

 

 

 

 

반응형