在 Python 中工作,我将如何使用 for 循环和 if 语句编写代码从未知整数列表中删除负数?
def mod_lis (list):
for i in range(len(list)):
if list[i] < 0:
del list[i]
return list
代码的问题在于您在 for 循环期间修改了列表。结果是,您以这种方式跳过元素并很快收到 IndexError,因为您的列表已被缩短。
您可以使用此列表理解来执行此操作:
mylist = [val for val in mylist if val>=0]
您可以使用filter()
和lambda
函数:
my_list = filter(lambda x : x >= 0, mylist)
最好复制列表而不选择项目,但如果必须就地修改,请尝试以下操作:
def remove_negatives(list):
pos = 0
for item in list:
if item >= 0:
list[pos] = item
pos += 1
del list[pos:]