我正在创建一个给定上限编号的特定值的列表,我可以使用以下命令来完成此操作。我只是想知道是否有更好/更短/更快的方法来做到这一点。
cap = 93
chunkSize = 10
chunks = []
while cap > 0:
val = chunkSize if cap / chunkSize >= 1 else cap
chunks.append(val)
cap -= val
for i, q in enumerate(chunks):
print(i, q)
预期的正确输出是 -
0 10
1 10
2 10
3 10
4 10
5 10
6 10
7 10
8 10
9 3
如果有什么奇特的方法可以做到这一点,请回复。
我已经有了一个可行的解决方案。
正如 viggo 所指出的,只需计算您需要多少个完整块即可。区别只是你需要检查最后一个块是否不为零:
whole_chunks, last_chunk = divmod(cap, chunk_size)
chunks = [chunk_size] * whole_chunks
if last_chunk:
chunks.append(last_chunk)