You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python编写deletePerson函数删除列表元素返回None问题求助

问题解决:Python实现deletePerson函数返回None的问题

我正在学习Python,需要完成练习:实现deletePerson函数,从列表中删除指定人员并返回不含该人员的新列表。但编写的两段代码均返回None,代码如下:

第一段代码

people = ['juan','ana','michelle','daniella','stefany','lucy','barak',"emilio"] 

def deletePerson(person_name):
    new_people = []
    for i in range(0, len(people)):
        if people.index(person_name):
    new_people = people.remove(person_name)
    return new_people

print(deletePerson("daniella"))
print(deletePerson("juan"))
print(deletePerson("emilio"))

第二段代码

people = ['juan','ana','michelle','daniella','stefany','lucy','barak',"emilio"] 

#Your code go here:
def deletePerson(person_name):
    new_people = []
    for i in range(0, len(people)):
        if person_name in people:
    new_people = people.remove(person_name)
    return new_people

print(deletePerson("daniella"))
print(deletePerson("juan"))
print(deletePerson("emilio"))

我尝试用index()查找元素再调用remove(),也试过判断元素是否在列表中,均未得到预期结果,求解决方法。


问题原因分析

  1. list.remove()返回值为None:remove()是原地修改列表的操作,它只会改变原列表,不会返回修改后的列表,所以你把它赋值给new_people后,得到的自然是None。
  2. 冗余的循环与判断:两段代码里的for循环和if判断没有实际作用,既没有正确缩进执行逻辑,也没有帮助生成新列表,属于无效代码。
  3. 全局列表被修改的副作用:代码直接修改了全局的people列表,多次调用函数后原列表会持续变化,导致后续调用结果不符合预期。

正确实现方法

方法1:生成新列表(推荐,不修改原列表)

遍历原列表,将不等于目标名字的元素加入新列表,返回这个新列表:

people = ['juan','ana','michelle','daniella','stefany','lucy','barak',"emilio"] 

def deletePerson(person_name):
    new_people = []
    for name in people:
        if name != person_name:
            new_people.append(name)
    return new_people

print(deletePerson("daniella"))
print(deletePerson("juan"))
print(deletePerson("emilio"))

也可以用列表推导式简化代码:

def deletePerson(person_name):
    return [name for name in people if name != person_name]

方法2:复制原列表后修改(避免修改全局列表)

如果一定要用remove(),需要先复制原列表,在副本上操作后返回副本:

def deletePerson(person_name):
    new_people = people.copy()  # 也可以用new_people = list(people)
    if person_name in new_people:
        new_people.remove(person_name)
    return new_people

内容的提问来源于stack exchange,提问作者Ndavlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:50:20