【发布时间】:2017-10-02 15:36:53
【问题描述】:
for i in generate_chunks([1, 2, 3, 4, 5], 2):
print(i)
# [[1], [2, 3, 4, 5]]
# [[1, 2], [3, 4, 5]]
# [[1, 2, 3], [4, 5]]
# [[1, 2, 3, 4], [5]]
for i in generate_chunks([1, 2, 3, 4, 5], 3):
print(i)
# [[1], [2], [3, 4, 5]]
# [[1, 2], [3], [4, 5]]
# [[1, 2, 3], [4], [5]]
# [[1, 2], [3, 4], [5]]
# ...
如何实现generate_chunks(list, n)?
基本上generate_chunks 所做的是将list 拆分为n 块并生成这些块的列表。
为了澄清,n 指的是块的数量,而不是块的长度。
产生这些块列表的顺序无关紧要,但是初始列表中元素的顺序很重要,因此对于给定列表[1, 2, 3],结果[[1], [2, 3]] 将是有效的,而[[1], [3, 2]将是无效的。
(最好不使用第三方库)
【问题讨论】:
-
您是否尝试过使用
range并将块大小添加到每个步骤作为切片的结尾?比如for i in range(0, len(l), s)然后yield l[i, i+s] -
@arielnmz 假设您的意思是
yield l[i : i+s]。这将返回[1, 2] [3, 4] [5]和s = 2 -
generate_chunks(l,4)的输出应该是什么? -
每个 'yield' 应该返回一个长度为 4 的列表
-
@martineau 我也认为这不是重复的。简而言之,该问题接受 [(2,), (4,), (1, 3)] 作为分区,但这个问题不接受,因为 1 和 3 不连续。