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

​return [x.upper() for x in L if isinstance(x, str)]这语句是怎么运行的?

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


尝试了几次分解写法,都错了,我想知道这句语句的运行过程是怎样的

正在回答

3 回答

x.upper() for x in L if isinstance(x, str)  :将L里的第一个元素取出来,赋给x,isinstance(x, str)判断x是否为字符串类型,是则返回true ,执行x.upper()变为大写字母,如果返回false,则不执行x.upper()

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

2uo 提问者

看语句是能理解到,但是,我分开写 for x in L: if isinstance(x,str): return x.upper() 这样输出的话就会在第一个满足if条件后中止,结果看得出问题在哪,但是不知道该怎么调
2016-07-30 回复 有任何疑惑可以回复我~
#2

离鸿酹雨 回复 2uo 提问者

return语句用来从一个函数 返回 即跳出函数。 就是说在for x in L: if isinstance(x,str): return x.upper() 里return x.upper()之后就跳出了这个函数不再执行了,所以在第一个满足if条件后中止。 因为这一段是在生成list里学习到,所以可以把满足条件的x.upper()放到一个list 里,最后retuen 这个list。
2016-07-30 回复 有任何疑惑可以回复我~
#3

离鸿酹雨 回复 2uo 提问者

def toUppers(L): #return [x.upper() for x in L if isinstance(x, str) ] temp=[] for x in L: if isinstance(x,str): temp.append(x.upper()) return temp print toUppers(['Hello', 'world', 101])
2016-07-30 回复 有任何疑惑可以回复我~
#4

2uo 提问者

非常感谢!
2016-07-30 回复 有任何疑惑可以回复我~
#5

2uo 提问者 回复 离鸿酹雨

那就是漏掉了return返回结束语句的知识点,之前思路还是想写一个L[x]来循环执行。谢谢了
2016-07-30 回复 有任何疑惑可以回复我~
查看2条回复

我看错了

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

我不明白 upper全部都转换成大写 为什么只是第一个呢

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

举报

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

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

进入课程

​return [x.upper() for x in L if isinstance(x, str)]这语句是怎么运行的?

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