Python:创建一个函数,该函数遍历列表并返回一个列表副本,其中删除了一个数字
我有以下清单:Python:创建一个函数,该函数遍历列表并返回一个列表副本,其中删除了一个数字,python,list,function,for-loop,Python,List,Function,For Loop,我有以下清单: listInitial = [20, 33, 24, 11, 0, 4, 3, 11] 我试图编写一个函数,通过它进行迭代,并返回这个列表的一个副本,其中11个被删除。所需的输出是:[20,33,24,0,4,3] 我想在函数中使用append方法和for循环。下面是我的代码: listSecond = [] def iterateandremove (listInitial, num): for i in listInitial: if i != num
listInitial = [20, 33, 24, 11, 0, 4, 3, 11]
我试图编写一个函数,通过它进行迭代,并返回这个列表的一个副本,其中11个被删除。所需的输出是:[20,33,24,0,4,3]
我想在函数中使用append方法和for循环。下面是我的代码:
listSecond = []
def iterateandremove (listInitial, num):
for i in listInitial:
if i != num:
listSecond.append(i)
print (listSecond)
return (listSecond)
iterateandremove (listInitial, 11)
当我运行代码时,它会打印出正确的列表。但是我的函数根本不返回任何东西。我做错了什么?您应该在函数中定义
listSecond
,然后从那里返回它
这样,如果您多次运行它,您只返回您的输入列表,而不是之前的所有列表的组合
def iterateandremove (listInitial, num):
listSecond = []
for i in listInitial:
if i != num:
listSecond.append(i)
return (listSecond)
removed = iterateandremove(listInitial, 11)
print(removed)
#[20, 33, 24, 0, 4, 3]
您也可以通过简单的列表理解来实现这一点,而无需声明listSecond
def iterateandremove(initial, num):
return [n for n in initial if n != num]
您应该在函数中定义
listSecond
,并从那里返回它
这样,如果您多次运行它,您只返回您的输入列表,而不是之前的所有列表的组合
def iterateandremove (listInitial, num):
listSecond = []
for i in listInitial:
if i != num:
listSecond.append(i)
return (listSecond)
removed = iterateandremove(listInitial, 11)
print(removed)
#[20, 33, 24, 0, 4, 3]
您也可以通过简单的列表理解来实现这一点,而无需声明listSecond
def iterateandremove(initial, num):
return [n for n in initial if n != num]
当我运行代码时,它会打印出正确的列表。但是我的函数根本不返回任何东西。我做错了什么
这是因为您没有将其分配给变量。您还需要在函数中创建一个新容器,而不是使用全局变量。试试这个:
def iterate_and_remove(list_initial, num):
list_second = []
for i in list_initial:
if i != num:
list_second.append(i)
return list_second
result = iterate_and_remove([1,2,3,4], 4)
print(result)
您也可以通过列表理解来完成此操作:
list_second = [i for i in list_initial if i != 11]
当我运行代码时,它会打印出正确的列表。但是我的函数根本不返回任何东西。我做错了什么
这是因为您没有将其分配给变量。您还需要在函数中创建一个新容器,而不是使用全局变量。试试这个:
def iterate_and_remove(list_initial, num):
list_second = []
for i in list_initial:
if i != num:
list_second.append(i)
return list_second
result = iterate_and_remove([1,2,3,4], 4)
print(result)
您也可以通过列表理解来完成此操作:
list_second = [i for i in list_initial if i != 11]
def iterateandremove(listInitial,num):
返回[n如果n!=num,则在listInitial中为n返回n]
listInitial=[20,33,24,11,0,4,3,11]
打印(迭代删除(列表首字母,11))
如果您使用的是python3,那么列表理解将像上面的代码一样为您完成工作
如果您使用的是python2,我建议您改用python3,有关更多详细信息,请参阅def iterateandremove(listInitial,num):
返回[n如果n!=num,则在listInitial中为n返回n]
listInitial=[20,33,24,11,0,4,3,11]
打印(迭代删除(列表首字母,11))
如果您使用的是python3,那么列表理解将像上面的代码一样为您完成工作
如果您使用的是python2,我建议您改用python3,有关更多详细信息,请参阅另一种选择
listInitial = [20, 33, 24, 11, 0, 4, 3, 11]
def iterateandremove(listInitial, num):
return list(filter((num).__ne__, listInitial))
print(iterateandremove(listInitial, 11))
[20, 33, 24, 0, 4, 3]
lambda函数也是一个很好的候选函数
listInitial = [20, 33, 24, 11, 0, 4, 3, 11]
def iterateandremove(listInitial, num):
return list(filter(lambda digit: digit != num, listInitial))
print(iterateandremove(listInitial, 11))
[20, 33, 24, 0, 4, 3]
另一种选择
listInitial = [20, 33, 24, 11, 0, 4, 3, 11]
def iterateandremove(listInitial, num):
return list(filter((num).__ne__, listInitial))
print(iterateandremove(listInitial, 11))
[20, 33, 24, 0, 4, 3]
lambda函数也是一个很好的候选函数
listInitial = [20, 33, 24, 11, 0, 4, 3, 11]
def iterateandremove(listInitial, num):
return list(filter(lambda digit: digit != num, listInitial))
print(iterateandremove(listInitial, 11))
[20, 33, 24, 0, 4, 3]
一切似乎都正常,函数返回的列表没有11
returnedList = iterateandremove (listInitial, 11)
print(returnedList) #[20, 33, 24, 0, 4, 3]
一切似乎都正常,函数返回的列表没有11
returnedList = iterateandremove (listInitial, 11)
print(returnedList) #[20, 33, 24, 0, 4, 3]
为什么函数本身没有
listSecond=[]
你确定它首先返回了什么吗?我尝试了你的代码,它似乎工作了。你的函数正在返回一些东西。您没有对返回值执行任何操作(既没有将其存储到名称中,也没有打印它)。您还没有告诉我们您期望的是什么,或者发生的事情是如何出错的(尽管在函数外部定义的listSecond
几乎肯定是错误的,并且print
不应该出现在生产代码中)。为什么您没有listSecond=[]
在函数本身中,您确定它首先返回了什么吗?我尝试了你的代码,它似乎工作了。你的函数正在返回一些东西。您没有对返回值执行任何操作(既没有将其存储到名称中,也没有打印它)。您没有告诉我们您期望的是什么,或者发生的事情是如何出错的(尽管在函数外部定义的listSecond
几乎肯定是错误的,并且打印的不应该出现在生产代码中)。OP确实返回了list\u second
,所以他们确实返回了一些东西。@ShadowRanger我更新了我的回答。问题是他们没有将函数调用的结果分配给任何东西。OP第二次返回了列表,所以他们确实返回了一些东西。@ShadowRanger我更新了我的回答。问题是他们没有将函数调用的结果分配给任何对象。