首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python错误~列表索引超出范围

Python错误~列表索引超出范围
EN

Stack Overflow用户
提问于 2016-08-06 20:45:22
回答 2查看 59关注 0票数 0
代码语言:javascript
复制
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。我把它弄得乱七八糟,没有用,还看过其他相关的帖子。有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-06 20:57:07

应修改您的时间条件:

代码语言:javascript
复制
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的所有子列表。

代码语言:javascript
复制
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]
票数 0
EN

Stack Overflow用户

发布于 2016-08-06 21:02:16

如果子列表的长度为n,则只需要将其追加到子列表数组中,然后在其子列表长度为n时中断。否则,ii+i可能会超出len(L) - 1,从而导致索引错误。

代码语言:javascript
复制
    if len(sub) == n:
        sublists.append(sub)
        break

这里有一个可行的解决方案(假设您想要的就是L3viathan在评论中要求的内容)。

代码语言:javascript
复制
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 sublists
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38808547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档