概述
文章目录
- 1、生成一个包含10000000个元素的列表
- 2、求0~100之间的所有奇数
- 3、元素筛选及处理
- 4、错误语法示范
- 5、总结
列表生成式,指在列表中,按照一定规则,快速生成列表元素的方式。
接下来,我们举几个例子,看下普通的列表生成与使用列表生成式在 书写及性能上有何区别。
1、生成一个包含10000000个元素的列表
-
普通实现
import time start_time = time.time() data = [] for i in range(10000*1000): data.append(i) end_time = time.time() print('用时:%s'%(end_time-start_time))
结果:
-
列表生成式
import time start_time = time.time() data = [i for i in range(10000000)] #列表生成式 end_time = time.time() print('用时:%s'%(end_time-start_time))
结果:
分析:- 普通模式使用三行代码,列表生成式仅用一行,列表生成式更为简洁优雅。
- 由运行所用时长可看出,列表生成式速度更快,效率更高。
- 列表生成式,前面为表达式,后面为for循环
2、求0~100之间的所有奇数
思路:
step1、循环0~100
step2、用模运算判断是否是奇数
-
普通实现
result = [] for i in range(100): if i % 2 != 0: result.append(i)
-
列表生成式
result = [i for i in range(100) if i % 2 != 0]
分析:
- 列表生成式同样是一行代码搞定,十分简洁
- for循环后可以通过if进行元素筛选
3、元素筛选及处理
上面两个例子很简单,当然,列表生成式的功能远不止于此。下面,我们完成一些稍微复杂的需求。
-
求0~100的所有奇数的平方
实例2的变种,做个小修改即可。result = [i*i for i in range(100) if i % 2 != 0]
-
将所给字符串列表的所有小写元素改为大写,大写改为小写
step1、循环列表
step2、判断是否是大写元素,s.lower()!=ss = ['jc','YF','xbz'] result = [i.lower() if i.lower()!=i else i.upper() for i in s] print(result)
结果:
['JC', 'yf', 'XBZ']
-
将所给列表的元素、下标对应组成字典
注:列表需为字符串列表s = ['jc','dbz','yf','xdg'] result = [{value:index} for index,value in enumerate(s)]
结果:
[{'jc': 0}, {'dbz': 1}, {'yf': 2}, {'xdg': 3}]
4、错误语法示范
#if在for循环后,加else报错
result = [i for i in range(100) if i % 2 != 0 else]
#表达式执行多行语句
result = [i+=1;i*i for i in range(100)]
报错:
5、总结
1、列表生成式能大幅度简化代码、使其更为简洁优雅
2、能有效提高代码效率
3、可对列表元素进行筛选处理
(1)单个条件判断,if写在for循环后,后面不能跟else
(2)if…else判断写在for循环之前
4、元素表达式只能进行单语句操作
参考文章:
[1] 列表生成式-廖雪峰的官方网站
最后
以上就是高贵大神为你收集整理的【python实用特性】- 列表生成式的全部内容,希望文章能够帮你解决【python实用特性】- 列表生成式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复