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

如何编写Python函数过滤列表中的全大写单词并修复现有错误代码

代码问题排查
  • 返回语句位置错误:return new_list 写在了for循环内部,函数执行完第一次循环就会直接返回结果,不会遍历完所有列表元素。
  • 列表引用赋值问题:new_list = my_list 没有生成新的列表对象,只是给原列表绑定了新的变量名,修改my_list的同时会同步修改new_list,还会意外改动函数外的原列表。
  • 遍历列表时删除元素会导致索引偏移:一边遍历原列表一边删元素,会让后续元素的索引前移,导致部分元素被跳过没有做校验,出现漏过滤的情况。
正确实现

简洁版(列表推导式实现,Python最佳实践)

def no_upper(my_list : list):
    return [word for word in my_list if not word.isupper()]

if __name__ == "__main__":
    my_list = ["ABC", "JAVA", "Python", "user", "CODE"]
    new_list = no_upper(my_list)
    print(new_list)   

显式循环版(和原写法逻辑对齐的修复方案)

def no_upper(my_list : list):
    new_list = []
    for word in my_list:
        if not word.isupper():
            new_list.append(word)
    return new_list

if __name__ == "__main__":
    my_list = ["ABC", "JAVA", "Python", "user", "CODE"]
    new_list = no_upper(my_list)
    print(new_list)   

两个版本运行输出均为 ['Python', 'user'],符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:06:03