使用步长python列出一个列表项?

给出一个输入列表 l = [1 2 3 4 5 6 7 8 9 10] 和组大小grp和步骤 grp = 3; step = 2 我想返回一份清单.注意最后的重复 1 2 33 4 55 6 77 8 99 10 1 或者如果 grp= 4; step = 2 输出应该是 1 2 3 43 4 5 65 6 7 87 8 9 10 这是我提出的代码,它没有做循环的事

给出一个输入列表

l = [1 2 3 4 5 6 7 8 9 10]

和组大小grp和步骤

grp = 3; step = 2

我想返回一份清单.注意最后的重复

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

解决方法

您可以利用xrange或range中的step函数,具体取决于您使用的python版本.然后像这样以列表的长度回绕mod

import sys

def grouplist(l,step):
    newlist=[]
    d = len(l)
    for i in xrange(0,len(l),step):
        for j in xrange(grp):
            newlist.append(l[(i+j)%d])
            sys.stdout.write(str(l[(i+j)%d]) + ' ')
        print

l = [1,2,3,4,5,6,7,8,9,10]
print grouplist(l,2)
1 2 3 
3 4 5 
5 6 7 
7 8 9 
9 10 1 
[1,10,1]

print grouplist(l,2)
1 2 3 4 
3 4 5 6 
5 6 7 8 
7 8 9 10 
9 10 1 2
[1,1,2]

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部