给出一个输入列表
l = [1 2 3 4 5 6 7 8 9 10]
和组大小grp和步长
^{pr2}$我想退一份单子。注意结尾处的重复
1 2 3
3 4 5
5 6 7
7 8 9
9 10 1
或者如果
grp= 4; step = 2
输出应该是
1 2 3 4
3 4 5 6
5 6 7 8
7 8 9 10
这是我想出的代码,它不做循环的事情。 但是想知道有没有更小的或者更简单的解决方案
def grouplist(l,grp,step):
oplist = list()
for x in range(0,len(l)):
if (x+grp<len(l)):
oplist.append(str(l[x:x+grp]))
return oplist
输出示例:
^{pr2}$您可以利用xrange或range中的step函数,具体取决于您使用的python版本。然后按列表的长度进行修改
使用deque:
输出:
^{pr2}$您还可以加入yield the islice对象,并决定要在外部对其执行什么操作:
输出:
或者只是用模:
相关问题 更多 >
编程相关推荐