从Python中删除未知列表中的否定值

时间:2014-04-04 07:30:43

标签: python list python-3.x negative-number del

在Python中工作,如何使用for循环和if语句编写代码以从未知的整数列表中删除负数?

def mod_lis (list):
    for i in range(len(list)):
        if list[i] < 0:
            del list[i]
    return list

3 个答案:

答案 0 :(得分:3)

您的代码存在的问题是您在for循环期间修改了列表。结果是你以这种方式跳过元素并很快得到一个IndexError,因为你的列表已经缩短了。

您可以使用此列表理解来执行此操作:

mylist = [val for val in mylist if val>=0]

答案 1 :(得分:0)

您可以使用filter()lambda功能:

my_list = filter(lambda x : x >= 0, mylist)

答案 2 :(得分:0)

最好在没有选定项目的情况下制作列表副本,但如果必须进行适当修改,请尝试以下操作:

def remove_negatives(list):
    pos = 0
    for item in list:
        if item >= 0:
            list[pos] = item
            pos += 1
    del list[pos:]