리스트 원소를 4개씩 쪼개서 접근하고 싶습니다


발생하는 문제 및 실행환경

정수만 저장하는 리스트에 원소를 4개씩 쪼개려고 합니다. 지금은 그냥 i+1, i+2, ... 이렇게 접근하고 있는데 다른 방법 없을까요?

C에서 넘어온지 얼마 안되서 파이썬 코드를 짜는데도 자꾸 C에서 했던 버릇이 나옵니다

소스코드

for i in xrange(0, len(ints), 4):
    # dummy op for example code
    foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3]

//아니면
while ints:
    foo += ints[0] * ints[1] + ints[2] * ints[3]
    ints[0:4] = []
  • 2016년 02월 04일에 작성됨

조회수 222


1 답변


좋아요
0
싫어요
채택취소하기

iterable을 균일한 chunk로 나누는 가장 쉽고 빠른 함수는

def chunker(seq, size):
    return (seq[pos:pos + size] for pos in xrange(0, len(seq), size))

입니다. python3을 쓰고 있다면 xrange를 range로 바꿔주세요

사용 예제는

text = "I am a very, very helpful text"

for group in chunker(text, 7):
   print repr(group),
# 'I am a ' 'very, v' 'ery hel' 'pful te' 'xt'

print '|'.join(chunker(text, 10))
# I am a ver|y, very he|lpful text

animals = ['cat', 'dog', 'rabbit', 'duck', 'bird', 'cow', 'gnu', 'fish']

for group in chunker(animals, 3):
    print group
# ['cat', 'dog', 'rabbit']
# ['duck', 'bird', 'cow']
# ['gnu', 'fish']

리스트를 chunk로 나누는 다른 코드는 파이썬 리스트를 균일한 크기로 나누고 싶어요를 봐주세요

  • 2016년 02월 04일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close