4 回答

TA贡献1804条经验 获得超7个赞

TA贡献1829条经验 获得超7个赞
def chunker(seq, size):
return (seq[pos:pos + size] for pos in range(0, len(seq), size))
# (in python 2 use xrange() instead of range() to avoid allocating a list)
简单。简单。快速。适用于任何序列:
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']

TA贡献1813条经验 获得超2个赞
我是粉丝
chunk_size= 4for i in range(0, len(ints), chunk_size): chunk = ints[i:i+chunk_size] # process chunk of size <= chunk_size

TA贡献1815条经验 获得超6个赞
import itertoolsdef chunks(iterable,size): it = iter(iterable) chunk = tuple(itertools.islice(it,size)) while chunk: yield chunk chunk = tuple(itertools.islice(it,size))# though this will throw ValueError if the length of ints# isn't a multiple of four:for x1,x2,x3,x4 in chunks(ints,4): foo += x1 + x2 + x3 + x4for chunk in chunks(ints,4): foo += sum(chunk)
其他方式:
import itertoolsdef chunks2(iterable,size,filler=None): it = itertools.chain(iterable,itertools.repeat(filler,size-1)) chunk = tuple(itertools.islice(it,size)) while len(chunk) == size: yield chunk chunk = tuple(itertools.islice(it,size))# x2, x3 and x4 could get the value 0 if the length is not# a multiple of 4.for x1,x2,x3,x4 in chunks2(ints,4,0): foo += x1 + x2 + x3 + x4
添加回答
举报