在Python中,如何将列表拆分为均匀大小的块,从上一个块的最后一个元素开始?

Gos*_*win 4 python list

转换列表的最pythonic方法是什么:

mylist = [0,1,2,3,4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)

成块n,它始终与前一块的最后一个元素开始的元素.最后一个块的最后一个元素应该与第一个块的第一个元素相同,以使数据结构循环.喜欢:

[
[0,1,2,3],
[3,4,5,6],
[6,7,8,0],
]
Run Code Online (Sandbox Code Playgroud)

在假设下len(mylist) % (n-1) == 0.这样它总能很好地工作.

orl*_*rlp 7

直截了当的解决方案呢?

splitlists = [mylist[i:i+n] for i in range(0, len(mylist), n-1)]
splitlists[-1].append(splitlists[0][0])
Run Code Online (Sandbox Code Playgroud)

  • 你可以在范围(0,len(lis),n-1)]`中使用`[(lis + [lis [0]])[i:i + n]来跳过第二步 (3认同)