我有以下情况。假设我有一个变量batch_size
和一个名为data
的列表。我想把batch_size
元素从data
中拉出,这样当我到达终点时,我就绕过去了。换句话说:
data =[1,2,3,4,5]
batch_size = 4
-> [1,2,3,4], [5,1,2,3], [4,5,1,2], ...
有没有一些很好的惯用方法来返回这样的切片?开始索引总是batch_size * batch
模化data
的长度,但是如果batch_size * (batch+1)
超出了列表的长度,是否有一种简单的方法从开始就“环绕”?在这种情况下,我当然可以把两片拼接起来,但我希望有一种真正干净的方法。你知道吗
我唯一的假设是batch_size < len(data)
。你知道吗
您还可以使用来自
collections
模块的deque
,并在deques上进行一次旋转,如以下示例所示:输出:
您可以使用itertools的
itertools.cycle
和grouper
配方块的结果是:
因此,如果您真的需要这些列表,那么您必须将其转换为列表(
[list(next(groups)) for ...]
)相关问题 更多 >
编程相关推荐