지방이의 Data Science Lab

[Python] 리스트 최솟값 찾기 w/속도 확인 본문

Data Analysis/Codility

[Python] 리스트 최솟값 찾기 w/속도 확인

[지현] 2021. 2. 18. 20:49

리스트의 사이즈가 작을 때는 리스트 sort해서 0값 찾는게 빠르다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#리스트 사이즈가 작을 때:
 
#(1) 리스트 사용
import timeit
def test():
    a = [132135845063]
    a.sort()
    return a[0]
= timeit.timeit('test()', setup='from __main__ import test', number = 1)
= '{:.9f}'.format(t)
print(t)
# 0.000002300
 
 
#(2) np사용
import timeit
def test():
    import numpy as np
    a = [132135845063]
    a = np.array(a)
    return a.min()
= timeit.timeit('test()', setup='from __main__ import test', number = 1)
= '{:.9f}'.format(t)
print(t)
# 0.206195100
 
#--> (1)이 더 빠르다.

다만, 리스트 사이즈가 엄청나게 커질 경우 np가 훨씬 빠른 속도 차이를 보인다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#리스트 사이즈가 클 때:
#(1) 리스트 사용
import timeit
def test():
    a = [random.randrange(1501for i in range(100000000)]
    a.sort()
    return a[0]
= timeit.timeit('test()', setup='from __main__ import test', number = 1)
= '{:.9f}'.format(t)
print(t)
#89.096424300
#(2) np사용
import timeit
import random
def test():
    import numpy as np
    a = [random.randrange(1501for i in range(100000000)]
    a = np.array(a)
    return a.min()
= timeit.timeit('test()', setup='from __main__ import test', number = 1)
= '{:.9f}'.format(t)
print(t)
# 84.215241800
 
 
#--> (2) 더 빠르다.

 

Comments