python生成列表_python之列表生成式实现list列表字符串元素全部大写

u=3578058035,164984015&fm=173&app=25&f=JPEG?w=640&h=360&s=4910CD18051A4FC81CF835D6010050B0

前言

在Python语言中,所谓的列表生成式,顾名思义,就是说可以生成list列表的表达式,是Python内置的一种强大的功能。列表生成式的英文含义为List Comprehensions。关于列表生成式的概念及特点,我在之前的视频中有过讲解,在此呢就不再多做叙述,只是做个简短回顾。本文主要讲解的是列表生成式的一个应用案例。

列表生成式

列表生成式作用是用来生成列表的,那么其特点也肯定是使用“[]”来去表示的。

需求1:生成一个列表,元素内容是1到20

1、不使用列表生成式

u=2615656782,3121418082&fm=173&app=25&f=JPEG?w=640&h=196&s=2941E34AEFECBF704C7D2C0F0000A0C2

使用range函数+for循环完成此功能,非常容易理解,也比较好实现。

2、使用列表生成式

u=1438647386,190082186&fm=173&app=25&f=JPEG?w=639&h=138&s=0141B34AEBE9B3684C6D2C0F000070C2

和第一种方式对比,可以发现使用列表生成式实现功能只需要一行代码就可以搞定了,非常的简单。

需求2:给定一个list集合,将集合中的字符串元素全部变为大写

1、不使用列表生成式

u=4095065205,534279027&fm=173&app=25&f=JPEG?w=640&h=347&s=0149F34A5BA5B3684CCD940D000070C3

2、使用列表生成式

u=1247602725,3091441369&fm=173&app=25&f=JPEG?w=638&h=193&s=014DB34ACBAC9F705ED5D40D000030C2

可以发现使用列表生成式实现此功能,非常简单。但是要特别注意的是,上面的实现方式是有问题的,这个问题也是我们经常容易犯的问题,上面的程序的运行结果虽然可以实现对list元素中的字符串内容全部变为大写,但是这个时候和我们的题意稍微有点不符,程序的运行结果会把列表中元素为90的这个元素给抛弃了,也就是说90这个元素不在生成的列表之内。

原因:列表生成式的执行过程理解不够,以上图为例,首先执行for循环,迭代list集合中的元素,然后继续if判断,如果元素是字符串,则执行ele.upper(),将字符串大写作为新生成的列表的元素,否则就不执行操作。很显然,90不是一个字符串,自然就舍弃了。

正确做法:

u=3591407656,2957510803&fm=173&app=25&f=JPEG?w=640&h=157&s=815933CACBE4BF705C41600E0000A0C2

只需要把if判断条件放置到for循环之前就好了。

总结

使用列表生成式实现生成一个list列表非常的简单,实现的代码也非常的优雅。但是是不是说列表生成式就没有缺点呢?显然也不是那么绝对的,因为这个列表生成式生成列表的时候是一下子就把列表生成好了,大家可以思考一个问题,就是:如果我要生成的列表足够的大,但是我却又用不到列表中的所有元素,这样一方面对内存的占有空间明显加大,而且也显的多余,这样显然是不够好的,您说呢?至于如何解决这种问题,python同样提供了另一种方案,就是生成器,我们下篇来讲。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值