为什么我的代码不行
def toUppers(L):
return [L(x).upper() for x in range(0,len(L) if isinstance(L(x), str)]
print toUppers(['Hello', 'world', 101])
def toUppers(L):
return [L(x).upper() for x in range(0,len(L) if isinstance(L(x), str)]
print toUppers(['Hello', 'world', 101])
2016-04-09
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..., 不要太好用。
举报