리스트 원소를 4개씩 쪼개서 접근하고 싶습니다
조회수 7201회
발생하는 문제 및 실행환경
정수만 저장하는 리스트에 원소를 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 답변
-
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로 나누는 다른 코드는 파이썬 리스트를 균일한 크기로 나누고 싶어요를 봐주세요
댓글 입력