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

为什么我把for拿出来放在外面就不行了呢?

为什么我把for拿出来放在外面就不行了呢?我知道要求是要把所有字符串打印在一个list里面,把for拿出来以后我以为会分开不同行打印,但是根本运行不了,这是为什么?

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

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

正在回答

3 回答

列表生成式顾名思义 你首先得是一个列表。你的这句[x.upper() if isinstance(x, str)],其中x.upper()并不是列表,只是列表之中的一个元素,所以后面的过滤条件并不能起作用。你可以看看这个博客https://www.cnblogs.com/yyds/p/6281453.html

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

无她

这波解释可以,学习到了;我原本以为错误原因跟return有关。
2019-05-29 回复 有任何疑惑可以回复我~

大哥你好好看列表生成式的意思再说吧,你这行[x.upper() if isinstance(x, str)]已经就不是列表生成式了!楼上那位想想表达的意思是不用列表生成式的写法而已!big fish!

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

无她

English:your 'big fish' is very Dazzling! I get something from here.Thank you. 中文:你这个”big fish”实属有点东西,get到了,有才。
2019-05-29 回复 有任何疑惑可以回复我~

你要搞清楚你这么写究竟符不符合它的语法吧?

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

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


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

慕仙9347523 提问者

能否说详细一点?就是不知道语法错在了哪里 在定义的函数里为什么第一步要创建一个空的Llist呢?这样的话输入指令里的那个Llist不就被清空了吗?
2018-10-24 回复 有任何疑惑可以回复我~
#2

无她 回复 慕仙9347523 提问者

python中是区分大小写的,l[]和L[]是不同的,上述代码中,新建了一个l[]是为了存储变成大写之后的元素,在输出时也是输出的l[],输出一样,而且输出还是list。不存在你说的清空不清空的问题,而且就算l[]和L[]一样,也不能说是清空,只能说是覆盖。好了,回答完毕。
2019-05-29 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

为什么我把for拿出来放在外面就不行了呢?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号