2014-11-04 9 views
2

파이썬에서 어떻게 슬라이스가 작동하는지 이해하려고합니다. 내가 뭔가를한다면파이썬에서 슬라이스 연산의 런타임

arr = [1,2,3,4,5] 
arr[0:n] = [9]*n 

n은 정수입니다. 스플 라이스 연산의 실행 시간은 어떻게됩니까? 이것은 O (n)에서 실행 되는가, 또는 어떻게 든 일정한 시간을 슬라이싱 하는가?

+0

이 모든 것은 9로 n을 곱한 다음 예외가 발생하므로 런타임이 일정합니다. –

+0

@ChrisMartin 매우 재미 있습니다. 이것을 지적 해 주셔서 감사합니다. 편집 됨. – Apollo

답변

0

IPython 노트북을 사용해 보시고, 타이밍 작업을 쉽게 해주는 %%timeit magic을 사용해보십시오. 나는 당신이하려고하는 것을 이해하고 있다고 생각합니다. 그래서 500 개의 요소 목록과 5000 개의 요소 목록을 잘라 냈습니다. 이것은 당신이 염두에두고있는 것입니까? 내 분석이 잘못하지 않는 한

enter image description here

,이 순서 N 보이는?

+0

분석이 잘못되었습니다. 당신은 원소의 n을 대체하는 것뿐만 아니라'arr'의 생성을 타이밍을 잡았습니다. (둘 다 O (n)입니다.) –

+0

고마워요. 문제를 해결 하겠지만, OP는 노트북에서 %% timeit을 사용하면 쉽게 해결할 수 있습니다. –

0

상수는 없습니다. 표현 [9]*n만이 공간적으로 선형이어서 시간적으로 선형입니다.