source

len() 함수의 비용

lovecheck 2022. 10. 20. 21:58
반응형

len() 함수의 비용

Python 내장 기능의 비용은 얼마입니까?(리스트/태플/스트링/사료)

설명한 모든 유형의 O(1)(원소의 실제 길이에 의존하지 않는 일정한 시간 - 매우 빠름)입니다.set기타 등array.array.

부르기len()이러한 데이터 타입은 파이썬 언어의 공식 및 가장 일반적인 구현인 CPython O(1)입니다.다음은 CPython의 다양한 함수의 알고리즘 복잡성을 제공하는 표 링크입니다.

시간 복잡성 Python Wiki 페이지

그 모든 물체들은 그들 자신의 길이를 추적한다.길이를 추출하는 데 걸리는 시간은 짧으며(빅 O 표기법으로는 O(1)), 대부분 [C 항이 아닌 Python 용어로 작성된 대략적인 설명]으로 구성됩니다.사전에서 "len"을 검색하여 오브젝트의 "len"을 검색하는 built_in len 함수에 디스패치합니다.__len__...라고 부르는 방법만 있으면 된다.return self.length

아래 측정은 다음과 같은 증거를 제공합니다.len()자주 사용되는 데이터 구조의 경우 O(1)입니다.

에 관한 주의사항timeit: 의 경우-s플래그가 사용되며 2개의 문자열이 에 전달됩니다.timeit첫 번째 문자열은 1회만 실행되며 타임은 설정되지 않습니다.

리스트:

$ python -m timeit -s "l = range(10);" "len(l)"
10000000 loops, best of 3: 0.0677 usec per loop

$ python -m timeit -s "l = range(1000000);" "len(l)"
10000000 loops, best of 3: 0.0688 usec per loop

태플:

$ python -m timeit -s "t = (1,)*10;" "len(t)"
10000000 loops, best of 3: 0.0712 usec per loop

$ python -m timeit -s "t = (1,)*1000000;" "len(t)"
10000000 loops, best of 3: 0.0699 usec per loop

문자열:

$ python -m timeit -s "s = '1'*10;" "len(s)"
10000000 loops, best of 3: 0.0713 usec per loop

$ python -m timeit -s "s = '1'*1000000;" "len(s)"
10000000 loops, best of 3: 0.0686 usec per loop

사전(2.7 이상에서 사전 이해 가능):

$ python -mtimeit -s"d = {i:j for i,j in enumerate(range(10))};" "len(d)"
10000000 loops, best of 3: 0.0711 usec per loop

$ python -mtimeit -s"d = {i:j for i,j in enumerate(range(1000000))};" "len(d)"
10000000 loops, best of 3: 0.0727 usec per loop

어레이:

$ python -mtimeit -s"import array;a=array.array('i',range(10));" "len(a)"
10000000 loops, best of 3: 0.0682 usec per loop

$ python -mtimeit -s"import array;a=array.array('i',range(1000000));" "len(a)"
10000000 loops, best of 3: 0.0753 usec per loop

Set(2.7+로 설정 가능):

$ python -mtimeit -s"s = {i for i in range(10)};" "len(s)"
10000000 loops, best of 3: 0.0754 usec per loop

$ python -mtimeit -s"s = {i for i in range(1000000)};" "len(s)"
10000000 loops, best of 3: 0.0713 usec per loop

디큐:

$ python -mtimeit -s"from collections import deque;d=deque(range(10));" "len(d)"
100000000 loops, best of 3: 0.0163 usec per loop

$ python -mtimeit -s"from collections import deque;d=deque(range(1000000));" "len(d)"
100000000 loops, best of 3: 0.0163 usec per loop

len은 O(1)입니다.이는 RAM에는 목록이 테이블(연속 주소 시리즈)로 저장되기 때문입니다.테이블이 언제 정지하는지 알기 위해서는 길이와 시작점 두 가지가 필요합니다.그렇기 때문에 len()은 O(1)이고 컴퓨터는 값을 저장하기 때문에 검색만 하면 됩니다.

언급URL : https://stackoverflow.com/questions/1115313/cost-of-len-function

반응형