2

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

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

3 回答 3

3

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

你可以用这个列表理解来做到这一点:

mylist = [val for val in mylist if val>=0]
于 2014-04-04T07:32:12.943 回答
0

你可以使用filter()一个lambda函数:

my_list = filter(lambda x : x >= 0, mylist)
于 2014-04-04T07:35:28.070 回答
0

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

def remove_negatives(list):
    pos = 0
    for item in list:
        if item >= 0:
            list[pos] = item
            pos += 1
    del list[pos:]
于 2014-04-04T10:23:40.537 回答