我想循环bytes数据,我希望同样的原则也能应用到字符串和列表中,我不是一个一个的去,而是一次去几个,我知道我可以用mystr[0:5]
来得到前五个字符,我想在循环中做。
我可以用C风格的方法来做,在范围内循环,然后返回剩余的元素(如果有的话):
import math
def chunkify(listorstr, chunksize:int):
# Loop until the last chunk that is still chunksize long
end_index = int(math.floor(len(listorstr)/chunksize))
for i in range(0, end_index):
print(f"yield ")
yield listorstr[i*chunksize:(i+1)*chunksize]
# If anything remains at the end, yield the rest
remainder = len(listorstr)%chunksize
if remainder != 0:
yield listorstr[end_index*chunksize:len(listorstr)]
[i for i in chunkify("123456789", 2)]
这工作得很好,但我强烈怀疑python语言的特性可以使它更紧凑。
1条答案
按热度按时间93ze6v8z1#
可以使用
range
step
参数压缩代码。您的函数可以从此生成器中生成,以使调用更整洁。