def getSublists(L,n):
List=L
sublists=[]
for i in range(len(L)-(n-1)):
ii=0
sub=[]
while ii<= n:
a=List[ii+i]
sub.append(a)
ii+=1
sublists.append(sub)
return sublists我试图得到列表L和子列表大小n的所有可能的子列表。当我试图运行我的程序时,我得到了一个IndexError: list index out of range。我把它弄得乱七八糟,没有用,还看过其他相关的帖子。有人能帮我吗?
发布于 2016-08-06 20:57:07
应修改您的时间条件:
def getSublists(L,n):
List=L
sublists=[]
for i in range(len(L)-(n-1)):
print ['i: ', i]
ii=0
sub=[]
while ii<= n-1:
print ['ii: ', ii]
a=List[ii+i]
sub.append(a)
ii+=1
sublists.append(sub)
return sublists对于10的列表,现在可以查询5的所有子列表。
a=range(10)
b=getSublists(a,5)
out:
[[0, 1, 2, 3, 4],
[1, 2, 3, 4, 5],
[2, 3, 4, 5, 6],
[3, 4, 5, 6, 7],
[4, 5, 6, 7, 8],
[5, 6, 7, 8, 9]发布于 2016-08-06 21:02:16
如果子列表的长度为n,则只需要将其追加到子列表数组中,然后在其子列表长度为n时中断。否则,ii+i可能会超出len(L) - 1,从而导致索引错误。
if len(sub) == n:
sublists.append(sub)
break这里有一个可行的解决方案(假设您想要的就是L3viathan在评论中要求的内容)。
def getSublists(L,n):
List=L
sublists=[]
for i in range(len(L)-(n-1)):
ii=0
sub=[]
while ii<= n:
a=List[ii+i]
sub.append(a)
ii+=1
if len(sub) == n:
sublists.append(sub)
break
return sublistshttps://stackoverflow.com/questions/38808547
复制相似问题