为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的代码不行

def toUppers(L):
    return [L(x).upper() for x in range(0,len(L) if isinstance(L(x), str)]
print toUppers(['Hello', 'world', 101])


正在回答

3 回答

def toUppers(L):
    return [x.upper() for x in L if isinstance(x,str)]

print toUppers(['Hello', 'world', 101])

上面这个就是正确写法了,

题主的代码运行的时候直接报了语法错误, 首先 if 前面 缺少一个 圆括号结束。所以题主的代码就成了:

def toUppers(L):
    return [L(x).upper() for x in range(0,len(L)) if isinstance(L(x), str)]

再跑一下,给出了 'list' object is not callable, 仔细一看发现 我们在调用 列表index 时用了 圆括号 L(x),应该是 中括号嘛:

def toUppers(L):
    return [L[x].upper() for x in range(0,len(L)) if isinstance(L[x], str)]

至此,终于调好了 , 但是题主仔细 看一下 你的思路和 标准思路的区别:

def toUppers(L):
    return [L[x].upper() for x in range(0,len(L)) if isinstance(L[x], str)]#题主的
    return [x.upper() for x in L if isinstance(x,str)]                     #标准的

不难看出,其实题主的代码,在每次循环中多查询了两次 列表。 相对来说就有些浪费性能了。

最后多说一句,尤其是从其他语言转过来的人, Python list 的 for...in..., 不要太好用。

4 回复 有任何疑惑可以回复我~

不可以打印,L中可能包含非字符串,要分开

0 回复 有任何疑惑可以回复我~

  return [x.upper() for x in L if isinstance(x, str)]

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758623    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

为什么我的代码不行

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信