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

조회수 4695회

발생하는 문제 및 실행환경

정수만 저장하는 리스트에 원소를 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] = []

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로 나누는 다른 코드는 파이썬 리스트를 균일한 크기로 나누고 싶어요를 봐주세요

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.