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

为何映射函数capitalize_all仅返回单个元素而非预期的三个?

为啥你的capitalize_all函数只返回单个元素?

嘿,我一眼就瞅到问题出在哪了!咱们来拆解你的代码慢慢说:

首先看你写的核心代码:

t = ['a','b','c']
def capitalize_all(t):
    res = []
    for s in t:
        res.append(s.capitalize())
        return res  # 就是这行的缩进搞砸了!
capitalize_all(res)  # 这里还有个小错误,后面聊

核心问题:return语句的缩进位置错了

你把return res写在了for循环的内部,这意味着循环刚处理完第一个元素(把'a'转成'A'塞进res),函数就直接把当前的res返回了——后面的'b'和'c'连被处理的机会都没有!

正确的写法是把return res移到循环外面,等所有元素都处理完再返回结果:

t = ['a','b','c']
def capitalize_all(t):
    res = []
    for s in t:
        res.append(s.capitalize())
    return res  # 缩进和for对齐,等循环跑完再返回

# 调用的时候要传你定义好的t,不是res(res是函数内部变量,外面找不到)
final_result = capitalize_all(t)
print(final_result)  # 这下就能得到 ['A', 'B', 'C'] 啦!

顺便提两个小问题

  • 你原来调用capitalize_all(res)的时候,res是函数内部才定义的变量,外部根本不存在,运行会直接报NameError,得改成传t才行。
  • 你试的capitalize_all('b')这种调用,虽然能跑,但因为字符串是可迭代对象,函数会遍历这个字符串的每个字符(这里只有一个'b'),处理完就返回['B']——如果你的函数是专门用来处理列表的,最好还是传列表类型的参数哦。

改完缩进后,函数就能完整遍历所有元素,res自然就会包含三个大写后的元素啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:46:37