微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从列表中删除否定元素的功能

如何解决从列表中删除否定元素的功能

我正在尝试编写一个函数,以删除列表中的否定元素。但是不明白为什么python解释器会显示indexerror(列表索引超出范围)。

lst=[-1,2,-4,12]
def fun(lst):
    s=[]
    for i in range(0,len(lst)):
        if 0<lst[i]:
            s.append(i)
            lst=s
    
    return print(lst)
print(fun(lst))

解决方法

在for循环的最后一行中,您执行了“ lst = s”。现在,此行将删除整个lst列表,并使其成为列表s的别名。因此,循环超出索引范围。删除最后一行应该可以解决您的问题。

现在使用return函数,只需返回s列表而不是lst。

lst=[-1,2,-4,12]
def fun(lst):
    s=[]
    for i in range(0,len(lst)):
        if 0<lst[i]:
            s.append(i)
    return print(s)

print(fun(lst))

此外,您可以改进代码,例如

lst=[-1,12]
def fun(lst):
    s=[]
    for i in lst:
        if i >= 0:
             s.append(i)
    return(print(s))

print(fun(lst))

,

您的缩进错误。 lst=s应该在for循环之后完成。

lst=[-1,len(lst)):
        if 0<lst[i]:
            s.append(i)
    lst=s
    
    return print(lst)
print(fun(lst))

应该更好,但是不好。

第二个问题是您附加了i而不是lst[i]

工作代码:

lst=[-1,len(lst)):
        if 0<lst[i]:
            s.append(lst[i])
    lst=s
    
    return print(lst)
print(fun(lst))

第二种解决方案是更改“ for”循环:

lst=[-1,12]
def fun(lst):
    s=[]
    for i in lst:
        if 0 < i:
            s.append(i)
    lst=s
    
    return print(lst)
print(fun(lst))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。