python高级编程--列表推导
来源:互联网 发布:广告植入软件 编辑:程序博客网 时间:2024/05/23 17:13
每当要对序列中的内容进行循环处理时,就应该尝试用列表推导来代替它。
例1:
下面的程序是获取10以内的偶数,一般的实现方式可能如下:
>>> numbers = range(10)>>> size = len(numbers)>>> evens = []>>> i = 0>>> while i < size:... if i % 2 == 0:... evens.append(i)... i += 1... >>> evens[0, 2, 4, 6, 8]
这对于c语言而言可能速速没有什么影响,但是在python下会是程序的执行速度变慢:
因为:
1、它使解释程序在每次循环中都要确定序系中的哪一个部分被修改:
2、他似的必须通过国一个计数器来跟踪必须处理的元素。
这种情况,推荐使用列表推导方式,代码更简洁、高效,涉及的元素也更少。在更大的程序中,这意味着引入的缺陷更少,代码更容易阅读和理解
>>> [i for i in range(10) if i % 2 == 0][0, 2, 4, 6, 8]
例2:关于enumerate的经典例子
>>> i = 0>>> seq = ["one", "two", "three"]>>> for element in seq:... seq[i] = '%d: %s' % (i, seq[i])... i += 1... >>> seq['0: one', '1: two', '2: three']
可以使用enumerate,这个内建函数为在循环中使用序列时提供了更加便利的获取索引的方式
>>> seq = ["one", "two", "three"]>>> for i, element in enumerate(seq):... seq[i] = '%d: %s' % (i, seq[i])... >>> seq['0: one', '1: two', '2: three']
当然,还可以用列表推导的方式将其重构
>>> def _treatment(pos, element):... return '%d: %s' % (pos, element)... >>> seq = ["one", "two", "three"]>>> [_treatment(i, el) for i, el in enumerate(seq)]['0: one', '1: two', '2: three']
最后,这个版本的代码更容易矢量化,因为它共享了基于序列中单哥项目的小函数。
0 0
- python高级编程--列表推导
- Python 列表推导
- Python 的列表推导
- python 列表推导
- python 列表推导式
- python 列表推导
- python 列表推导
- python列表推导式
- python使用列表推导
- python 列表推导式
- Python列表推导式
- python列表推导
- python 列表推导式
- Python的列表推导
- Python 列表推导
- Python的列表推导
- python 列表推导式
- python列表推导式
- css 伪类选择器相关
- 百度地图三维效果实现
- Android 捕获异常并在应用崩溃后重启应用
- windows上kafka环境安装
- Priority&&State
- python高级编程--列表推导
- SDN三种模型解析
- 学习python的第三十六天-OS模块,特殊的方法
- 欢迎使用CSDN-markdown编辑器
- Maven实战指南 10
- HTML调用手机摄影头
- 相机标定原理
- PostgreSQL数据库创建、删除、角色权限
- 纯CSS模仿百度导航