Function 为什么我会出现超出范围的错误?

Function 为什么我会出现超出范围的错误?,function,python-3.x,range,Function,Python 3.x,Range,我正在构建一个函数,从列表xs中提取所有否定项。然后我将这些否定添加到一个否定列表中,并将列表否定添加到列出new_home,它可能有值,也可能没有值。在我添加xs.pop(num)之前,该函数正在工作。为什么它现在超出了范围 代码如下: def extract_negatives(xs,new_home=None): negatives=[] if new_home==None: for num in range(len(xs)): if xs[num]

我正在构建一个函数,从列表xs中提取所有否定项。然后我将这些否定添加到一个否定列表中,并将列表否定添加到列出new_home,它可能有值,也可能没有值。在我添加xs.pop(num)之前,该函数正在工作。为什么它现在超出了范围

代码如下:

def extract_negatives(xs,new_home=None):
    negatives=[]
    if new_home==None:
    for num in range(len(xs)):
        if xs[num] <0:
            negatives.append(xs[num])
                xs.pop(num)
            return negatives
         else:
             for num in range(len(xs)):
                if xs[num] <0:
                    new_home.append(xs[num])
                    xs.pop(num)

     return new_home.append(negatives)
def extract_negatives(xs,new_home=None):
否定=[]
如果new_home==无:
对于范围内的num(len(xs)):

如果xs[num]如前所述,您正在修改传递给函数的列表,因此索引变得混乱。
若您必须从传递的列表中删除,那个么一个想法是在返回结果之前在函数末尾删除。这样突变就不会影响索引


另外,我不明白为什么你有if和else都在寻找
xs作为一个新的程序员,我真的不知道“看到它来了”。友善一点。因此,大多数测试用例仍然失败,我认为这与需要返回的内容有关。我还是很困惑。提示如下:第一个参数xs包含整数。我们将删除在xs中找到的任何负整数,并将其附加到第二个参数new_home。必须返回对接收到负整数的列表的引用。如果没有给出第二个参数,应创建并返回所有提取底片的列表。@ocean.1234,我已更新了我的回复,请参见上文。基本上,现在除了xs之外,我们还将new_home作为参数输入,并在每次运行期间向new_home添加负片。希望这有帮助。
def extract_negatives(xs,new_home):
    negatives=[]
    for num in range(len(xs)):
        if xs[num] <0:
            negatives.append(xs[num])

    new_home = new_home + negatives 
    for i in negatives:
        xs.remove(i)

    return new_home

new_home=[-9,-11,]
xs = [ 2 ,-3, 4, -5, 6, -7]

    new_home =  extract_negatives(xs,new_home)
    print new_home
>>> 
[-9, -11, -3, -5, -7]
 >>> xs
[2, 4, 6]