[python] itertools.islice와 slice 차이점


itertools.islice와 slice 차이점

import itertools

data = range(10)

# 새로운 리스트 생성 (메모리 할당)
data[2:5]

# 기존에 있던 data1에 iterator 객체 생성 (메모리 할당 X)
itertools.islice(data, 2, 5)

slice는 메모리를 할당받아 새로운 리스트를 생성하고 itertools.islice는 기존에 할당된 메모리를 재사용합니다.

리스트가 엄청 클 경우에 새로운 리스트를 만들어 메모리를 할당 받는 것은 불가능 합니다.
itertools를 이용한다면 보다 많은 메모리 사용 & 새로운 리스트를 만드는 연산을 없앨 수 있습니다.

slice는 내부 스토리지에 직접 접근하기 때문에 itertools.islice보다 속도가 빠릅니다.
itertools는 iterator 객체가 iteration 하는 속도만큼 오버헤드가 발생하여 일반적으로 slice보다 속도는 느립니다.

적은 데이터를 사용하며 빠른 속도가 필요할 때는 slice를
많은 데이터를 사용해야 할 경우에는 itertools.islice를 사용하시면 됩니다.


참고문헌

댓글

이 블로그의 인기 게시물

[opencv-python] 이미지 크기조절(resize) 하는 법

[python] selenium close와 quit 차이점

[python]파이썬: csv reader header skip (첫번째 행 무시하기, 안읽기)