Python 索引器错误:数组反转时列表索引超出范围

Python 索引器错误:数组反转时列表索引超出范围,python,list,Python,List,我正在尝试分组反转数组。我已经浪费了半个多小时来寻找问题,但却无法找出索引是如何超出范围的。 这是我的密码: def rev(A,S,N): start=S end=N while start<end: A[start],A[end]=A[end],A[start] #error here start+=1 end-=1 return A def reverseInGroups(A,N,K):

我正在尝试分组反转数组。我已经浪费了半个多小时来寻找问题,但却无法找出索引是如何超出范围的。 这是我的密码:


def rev(A,S,N):
    start=S
    end=N

    while start<end:
        A[start],A[end]=A[end],A[start]   #error here
        start+=1
        end-=1
    return A


def reverseInGroups(A,N,K):
    #Your code here
    rev(A,0,K)
    rev(A,K,N)    #error here
    return A
这是我得到的错误

样本输入1:N=5k=3A=[1,2,3,4,5] 样本输出1:3 2 1 5 4

样本输出2N=8K=3A=[1,2,3,4,5,6,7,8] 样本输出2:32165487


根本不需要使用/迭代位置-这可以避免错误,因为切片可以处理过大的切片:[1,2,3,4][2:99]在没有错误的情况下工作

def rev(data, start, end):
    """Reverses the range start:end (end exclusive) of the given list. 
    No safeguards whatsoever so only use with correct data. Out of bounds 
    is irrelevant due to slices used to reverse."""
    data[start:end] = data[start:end][::-1]  # you need end+1 if you want inclusive
    return data

def reverseInGroups(A,N,K): 
    rev(A,0,K)
    rev(A,K,N) 
    return A


l = list(range(11))

print ( reverseInGroups(l , 8, 3)) # why N (the bigger number) first?
得到

[2, 1, 0, 7, 6, 5, 4, 3, 8, 9, 10]
#0  1  2  3  4  5  6  7  8  9  10   # 0-3(exclusive) and 3-8(exclusive) reversed 
要尊重所有K大小的团体

def reverseInGroups(A,K):
    pos_at = 0
    while pos_at < len(A):
        rev(A, pos_at, pos_at+K)
        pos_at += K

    return A

根本不需要使用/迭代位置-这可以避免错误,因为切片可以处理过大的切片:[1,2,3,4][2:99]在没有错误的情况下工作

def rev(data, start, end):
    """Reverses the range start:end (end exclusive) of the given list. 
    No safeguards whatsoever so only use with correct data. Out of bounds 
    is irrelevant due to slices used to reverse."""
    data[start:end] = data[start:end][::-1]  # you need end+1 if you want inclusive
    return data

def reverseInGroups(A,N,K): 
    rev(A,0,K)
    rev(A,K,N) 
    return A


l = list(range(11))

print ( reverseInGroups(l , 8, 3)) # why N (the bigger number) first?
得到

[2, 1, 0, 7, 6, 5, 4, 3, 8, 9, 10]
#0  1  2  3  4  5  6  7  8  9  10   # 0-3(exclusive) and 3-8(exclusive) reversed 
要尊重所有K大小的团体

def reverseInGroups(A,K):
    pos_at = 0
    while pos_at < len(A):
        rev(A, pos_at, pos_at+K)
        pos_at += K

    return A
怎么样

def rev(a,start,end, middle):
    assert 0 <= start <= middle <= end < len(a)
    a[start:middle] = reversed(a[start:middle])
    a[middle:end] = reversed(a[middle:end])
    return a
怎么样

def rev(a,start,end, middle):
    assert 0 <= start <= middle <= end < len(a)
    a[start:middle] = reversed(a[start:middle])
    a[middle:end] = reversed(a[middle:end])
    return a

用什么样的数组来称呼它?或者你是说名单?arraylist不是我所知道的python类型的东西-可能是错误的标记a有多大,N有多大?请记住列表索引在lenl-1处停止。请提供一个。这些函数怎么称呼?问题可能在于您提供的开始和结束索引。此外,您应该使用表达型变量名,并请遵守将其小写的惯例。我建议def reva,start,end:,无需使用不清楚的名称,只需在第1行更改它们。您如何使用什么类型的数组来命名它?或者你是说名单?arraylist不是我所知道的python类型的东西-可能是错误的标记a有多大,N有多大?请记住列表索引在lenl-1处停止。请提供一个。这些函数怎么称呼?问题可能在于您提供的开始和结束索引。此外,您应该使用表达性变量名称,并请遵守将其小写的惯例。我建议def reva,start,end:,无需使用不清楚的名称,只需在第1行更改它们,就像Charm先生一样。非常感谢你帮助我。我不知道为什么我要用循环和所有的东西使它复杂化。先生,你的代码帮助了我,但仍然无法破解第三个测试用例的逻辑。你能浏览一下描述中的问题链接吗?工作很有魅力,先生。非常感谢你帮助我。我不知道为什么我要用循环和所有的东西使它复杂化。先生,你的代码帮助了我,但仍然无法破解第三个测试用例的逻辑。你能浏览一下描述中的问题链接吗?