我陷入了循环问题的一部分。我必须从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。
非常感谢帮助。
答案 0 :(得分:2)
听起来这是一个家庭作业问题,特别是因为你不能使用.remove
。
鉴于此,您的老师可能希望您采用类似这样的手动方法:
.append
它到您的新列表(如果您不想自己编写代码,请暂停鼠标)
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,更容易!