Jas*_*rly 2 python function list
我在codecademy项目中的指示是
定义一个名为purify的函数,它接收一个数字列表,删除列表中的所有奇数,然后返回结果.例如,purify([1,2,3])应该返回[2].不要直接修改您输入的列表; 相反,返回仅包含偶数的新列表.
我提出的代码是:
def purify(numbers):
pure = numbers
for num in pure:
if num % 2 != 0:
pure = pure.remove(num)
return pure
Run Code Online (Sandbox Code Playgroud)
错误是:
哎呀,再试一次.您的函数在[1]上作为输入崩溃,因为您的函数抛出"'NoneType'对象不可迭代"错误.
正如我已经理解它,这意味着我的代码中的某些内容将被返回为"无".或者那里没有数据.我似乎无法找到这个简短的代码有什么问题,除非它在我的if语句中.提前致谢.
所以我在代码中进行了编辑以删除"pure = pure.remove(num)"并解决了无问题.但是,当运行代码时,它仍然无法输入[4,5,5,4]并返回[4,5,4].
新守则:
def purify(numbers):
pure = numbers
for num in pure:
if num % 2 != 0:
pure.remove(num)
return pure
Run Code Online (Sandbox Code Playgroud)
第一个问题是您在迭代时更改列表.迭代时不要更改列表.你会错过循环中的一些值.
第二个问题是list.remove就地行动并返回无.因此,当你这样做时pure = pure.remove(num),你设置pure为None,不再可迭代,这又是导致错误的原因.相反,您可以按如下方式过滤列表
def purify(numbers):
return [num for num in numbers if num % 2 == 0]
Run Code Online (Sandbox Code Playgroud)