从列表中删除一个数字

时间:2016-10-18 15:51:37

标签: python loops for-loop

我陷入了循环问题的一部分。我必须从list1中删除" number"的所有实例。所以我们说list1是(1,2,3)而num是2.我必须返回的列表是(1,3)

def remove(list1,num)

    list1=list1
    num = num

这是给出的。 到目前为止,我有这个:

def remove(list1,num)

list1=list1

num=num

if num in list1:

这就是我被困的地方,因为我不知道怎么说编码"从列表中删除num" 我不允许使用.remove。

非常感谢帮助。

5 个答案:

答案 0 :(得分:2)

听起来这是一个家庭作业问题,特别是因为你不能使用.remove

鉴于此,您的老师可能希望您采用类似这样的手动方法:

  1. 创建新列表
  2. 对于上一个列表中的每个项目...
    1. 如果不是您想要过滤的值,.append它到您的新列表
  3. 返回新列表
  4. (如果您不想自己编写代码,请暂停鼠标)

      

    def remove(list1, num):
        new_list = []
        for item in list1:
            if item != num:
                new_list.append(item)
        return new_list

答案 1 :(得分:1)

使用列表理解:

list1 = [1,2,3]
num = 2
new_list = [i for i in list1 if i != num]
print(new_list)
>> [1,3]

答案 2 :(得分:0)

def remove(item,given_list):
    new_list = []
    for each in given_list:
        if item != each:
            new_list.append(each)
    return new_list

print(remove(2,[1,2,3,1,2,1,2,2,4]))
#outputs [1, 3, 1, 1, 4]

虽然我的答案与其他人一样强烈,但我觉得这是思考如何从列表中删除项目的基本方法。它允许人们从基本层面了解正在发生的事情。

基本上我们正在接受2个输入,要删除的项目以及要从中删除的列表。它循环遍历input_list并检查item是否等于我们要移除的item,如果它们与新列表中的append不一样,并且返回新列表。

我们不希望在循环时删除列表中的项目,因为它可能导致不合需要的循环。例如,如果我们有example_list=[1,2,3]并且我们处于for loop的第二次迭代,并且我们将2移除到位,它将尝试去某个我们不希望它去的地方。

答案 3 :(得分:0)

考虑到:

list=[1,2,3,2]

您可以使用以下命令检查元素是否在列表中:

if num in list

然后删除:

list.remove(num)

迭代它

示例:

>>> list=[1,2,3]
>>> list.remove(2)
>>> print list
[1, 3]

答案 4 :(得分:0)

使用纯循环并使用列表索引删除:

#!/usr/bin/env python
from __future__ import print_function

def remove(item, old_list):
    while True:
        try:
            # find the index of the item
            index = old_list.index(item)
            # remove the item found
            del old_list[index]
        except ValueError as e:
            # no more items, return
            return old_list

a_list = [1, 2, 3, 2, 1, 3, 2, 4, 2]
print(remove(2, a_list))

如果可能,当然,你应该使用列表理解,这是pythonic,更容易!