Python:从数字列表中删除负数 [英] Python: Removing negatives from a list of numbers

查看:988
本文介绍了Python:从数字列表中删除负数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题是要消除数字中的负数.

The question is to remove negatives from numbers.

当执行remove_negs([1, 2, 3, -3, 6, -1, -3, 1])时,结果为:[1, 2, 3, 6, -3, 1].结果假定为[1, 2, 3, 6, 3, 1].发生的情况是,如果连续有两个负数(例如-1, -3),则第二个数将不会被删除. def main(): 数字=输入(输入数字列表:") remove_negs(numbers)

When remove_negs([1, 2, 3, -3, 6, -1, -3, 1]) is executed, the result is: [1, 2, 3, 6, -3, 1]. The result is suppose to be [1, 2, 3, 6, 3, 1]. what is happening is that if there are two negative numbers in a row (e.g., -1, -3) then the second number will not get removed. def main(): numbers = input("Enter a list of numbers: ") remove_negs(numbers)

def remove_negs(num_list): 
  '''Remove the negative numbers from the list num_list.'''
    for item in num_list: 
        if item < 0: 
           num_list.remove(item) 

    print num_list

main()

推荐答案

在迭代列表时从列表中删除元素通常是个坏主意(请参阅列表理解:

It's generally a bad idea to remove elements from a list while iterating over it (see the link in my comment for an explanation as to why this is so). A better approach would be to use a list comprehension:

num_list = [item for item in num_list if item >= 0]

请注意,以上一行创建了一个 new 列表,并为其分配了num_list.您还可以对表单进行就地"分配

Notice that the line above creates a new list and assigns num_list to that. You can also do an "in-place" assignment of the form

num_list[:] = ...

不会在内存中创建新列表,而是修改num_list已经指向的内存位置.

which does not create a new list in memory, but instead modifies the memory location already being pointed to by num_list. This difference is explained in more detail here.

这篇关于Python:从数字列表中删除负数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆