파이썬 for문

파이썬에서 for문은 정해진 횟수만큼 반복하는 구문이다. 여기에 range를 써서 몇 번 돌아갈지를 정한다.
for i in range(10):
이러면 10번 돌아간다.

하지만 생각해보니 for는 이런데 쓰라고 만든게 아니다. in 뒤에 들어갈 수 있는 것은 다양한 리스트들인데, range는 그중 10개의 성분을 가지는 리스트를 만드는 것이다. 이 구문은 파이썬을 C언어처럼 쓰고 싶어하는 사람을 위해서 만들어진 것이다. 하지만 문제가 있다. C언어에서 for는 인덱스를 미리 만들어 놓지 않고 1씩 더해가면서 반복한다. 하지만 파이썬에서 range는 리스트를 미리 만들어서 거기서 하나씩 꺼내오는 방식이기 때문에 메모리를 사용하게 된다. 이게 반복의 수가 적을 때는 별 문제가 없는데, 반복해야 하는 수가 엄청 많아지면 문제가 된다. 예를 들어 10억번이라든가, 100억번이라든가. range에서 100억개의 원소를 가지는 리스트를 만드는 것 자체가 시간과 메모리가 필요한 일이 되는 것이다. 따라서
i=0
while i<10: 이렇게 해 놓고 뒤에다가 i+=1 이라고 써서 반복을 시키는 것이 더 좋다. 반복횟수가 수만번 정도일 때는 별 차이가 없겠지만, for i in range(10)처럼 썼다가 10이 10억이 되면 메모리 문제가 발생할 수도 있다.

댓글 남기기

이메일은 공개되지 않습니다.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑

%d 블로거가 이것을 좋아합니다: