我有以下列表:
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)当我运行代码时,它会打印出正确的列表。但是我的函数根本没有返回任何东西。我做错了什么?
发布于 2021-01-21 08:25:37
你应该在你的函数中定义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]发布于 2021-01-21 08:26:24
当我运行代码时,它会打印出正确的列表。但是我的函数根本没有返回任何东西。我做错了什么?
这是因为您没有将其赋值给变量。您还需要在函数中创建一个新容器,而不是使用全局变量。试试这个:
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]发布于 2021-01-21 08:38:43
另一种选择;
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]https://stackoverflow.com/questions/65819519
复制相似问题