루프를 몇 번만 돌려 보고 싶을 때

스크립트에서 같은 작업을 많은 데이터에 반복할 때, 한 번 도는데 엄청나게 오래 걸리거나 다른 사이트 리소스를 쓰기 때문에 괜히 민폐를 안 끼치려고 앞 부분만 테스트하는 게 좋을 때가 많습니다. 한 번만 돌릴 때는 이렇게 보통..

for url in 엄청많은URL:
    f = urllib.urlopen(url)
    # 한 번에 확! 하기는 좀 귀찮은 작업을 한다
    raise SystemExit  # 여기서 그냥 1번만 돌고 종료

종종 첫 데이터는 엄청 단순해서 한 5개나 앞쪽 10개만 돌려보고 싶을 때, [:5]나 [:10]하면 좋겠죠. 그런데, 어떤 건 이터레이션은 되지만 이터레이션 자체가 자원을 많이 먹거나 민폐를 끼치거나 하는 경우가 있습니다. 그 때 뭐 제한하려면 enumerate같은 걸 써서 i >5 면 중단 이러면 되겠지만 역시 너무 순수해 보여서 지루하고 타이핑도 많아서 귀찮습니다. 그래서 제가 보통 쓰는 방법

cd = list('12345')
for url in 엄청많은URL:
    # 다른 작업
    cd.pop()

왠지 12345 일일이 써 주면 아! 다섯번 하는구나! 하는 필이 확 오고, 에러로 끝내주니까 아주 신납니다. :)

혹시 직접 쓰시는 재미있는 방법이 있으면 소개해 주세요~

댓글 9 개 | 트랙백 0 개 (보낼곳) | 태그 python


트랙백
트랙백이 없습니다.
댓글
예전에 list('12345') 비슷한 방법을 썼었는데, 하루는 20번 루프를 돌리려다가 완전 물먹었던 적이 있습니다. 3시간 정도 머리를 쥐어뜯다가 발견한 버그는: list('123456789123456789') orz…
2008-11-23 07:09
블루님: 커헉. 그런.. 저도 수시로 ... ^^;;
2008-11-23 07:14
wafe  ▒
세시간!!!
2008-11-23 17:46
pop을 다른 작업 앞에서 해야 되지 않나요? 아니면 6번 수행 될것같은데;; ㅎ
2008-11-24 12:42
오오. 그것도 그렇네요. 역시 꿀잠님 예리하신!
2008-11-24 15:37
이정민  ▒
for url in __import__('itertools').islice(엄청많은URL, 5):
# 다른 작업

실제로는 ^C^C^C :)
2008-11-24 20:10
사실 input()해서 계속 하고 싶으면 0 아니면 그냥 엔터 치는 것도.. ㅎㅎ;
2008-11-25 01:02
nohmad  ▒
파이썬 초보라서 range가 먼저 생각이 나는데..

for i in range(5):
for url in urls:
do_something(url)

루비라면,

5.times do
urls.each { |url| do_something(url) }
end
2008-11-26 18:07
for는 인덴트를 왔다갔다 해야해서 손이 좀 갈 것 같아용.. ^.^
shift를 포함해서 타이핑을 최소화 하는 게 전략!
2008-11-26 23:32

글이 올라온 지 30일이 지나 새 댓글은 쓸 수 없습니다.

누구?

장혜식 (Hyeshik Chang)
내일을 사랑하는 소년(!)