『Python』序列学习总结之五 ——列表推导式的一些应用
来源:互联网 发布:西安it 编辑:程序博客网 时间:2024/06/05 19:53
最近在工作中为了减少代码的行数而开始使用列表推导式, 结果非常好, 七八行的代码只需要用一行代码就能够写完, 虽然逻辑对于不怎么使用列表推导式的人来说会比较困难, 但是习惯之后也相当容易。 因此强烈推荐大家尽量使用列表推导式。
例子1:
numLists = []def test(): for i in xrange(147): numList = [] for j in xrange(147): if i == j: numList.append(1) else: numList.append(0) numLists.append(numList)test()在这个例子中,总共的行数是11行, 那么如果用列表推导式应该怎么写呢?
[[1 if i == j else 0 for i in range(147)] for j in range(147)]列表推导式生成的结果跟 test 函数生成的结果是一模一样的,但是行数却要少得多, 同时在进行性能测试时发现, 列表推导式的运行时间只有 test 函数的一半
因此无论是为了减少代码行数还是提高性能, 都应该使用列表推导式
当然了, 列表推导式不是只有这样的应用, 它还可以用来生成一个元素符合你想要的列表, 好处在于除了不用特地写个函数或者写个for循环之外, 还在于它的简单而又实用
例子2:
[(0, 1) for i in range(10)]
例子2可以生成一个长度为10, 元素分别为 (0, 1) 的列表。 用处在于, 你可以用来生成一个线性规划中各个变量的上下限的变量。 而如果使用for循环来写呢?
例子3:
mylist = []for i in range(10): mylist.append((0, 1))对比例子2和例子3,虽然例子3的行数只有3行并不算多, 但是明显例子2比例子3更加简单而且实用
另外例子2也有一个更简单的写法:
[(0, 1)]*10总结: 我们使用列表推导式时大多时候是为了减少代码行数, 很少是为了提高性能的。 还有一个目的就是为了使得代码更加简单而又实用, 所以如果有更简洁的写法的话, 那就果断抛弃列表推导式吧!
0 0
- 『Python』序列学习总结之五 ——列表推导式的一些应用
- 『Python』序列学习总结之一 ——列表
- Python 列表推导式应用
- Python的列表推导式学习
- python之列表推导式及嵌套列表解析学习
- python之列表推导式
- Python之列表推导式
- python列表推导式的应用,基础面试题
- python学习:数组之列表推导
- Python的列表推导式
- Python的列表推导式
- Python的列表推导式
- Python 的列表推导式
- 『Python』序列学习总结之六——如何命名规范的变量名
- Python中列表推导式总结
- Python学习笔记5_列表推导式与序列解包
- python学习笔记——列表推导 list comprehension
- python学习记录--列表推导式
- oracle_建表并指定字段和描述
- 剑指offer(54):构建乘积数组
- qt creator中出现常量中有换行符或乱码问题
- html5 拖拽
- 多边形构成问题(今日头条笔试题)
- 『Python』序列学习总结之五 ——列表推导式的一些应用
- 【数论】bzoj4174tty的求助
- python 代码缩进
- IDE习惯配置之颜色篇
- Java 8十个lambda表达式案例
- 一直没效果?你的SEO策略是时候调整了!
- Lua垃圾回收和弱引用
- Hibernate乐观锁实现之Version
- 详解数据库中的事务、隔离级别、并发控制