`

Python入门 列表生成式

阅读更多

生成列表:

要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11)

>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环:

>>> L = []
>>> for x in range(1, 11):
...    L.append(x * x)
... 
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

这种写法就是Python特有的列表生成式。利用列表生成式,可以以非常简洁的代码生成 list。

 

复杂表达式:

使用for循环的迭代不仅可以迭代普通的list,还可以迭代dict。

假设有如下的dict:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }

完全可以通过一个复杂的列表生成式把它变成一个 HTML 表格:

tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in d.iteritems()]
print '<table>'
print '<tr><th>Name</th><th>Score</th><tr>'
print '\n'.join(tds)
print '</table>'

注:字符串可以通过 进行格式化,用指定的参数替代%s。字符串的join()方法可以把一个 list 拼接成一个字符串。

把打印出来的结果保存为一个html文件,就可以在浏览器中看到效果了:

<table border="1">
<tr><th>Name</th><th>Score</th><tr>
<tr><td>Lisa</td><td>85</td></tr>
<tr><td>Adam</td><td>95</td></tr>
<tr><td>Bart</td><td>59</td></tr>
</table>

 

条件过滤:

列表生成式的 for 循环后面还可以加上 if 判断。例如:

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

如果我们只想要偶数的平方,不改动 range()的情况下,可以加上 if 来筛选:

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

有了 if 条件,只有 if 判断为 True 的时候,才把循环的当前元素添加到列表中。

 

 

1. isinstance(x, str) 可以判断变量 x 是否是字符串;

2. 字符串的 upper() 方法可以返回大写的字母。

 

多层表达式:

for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。

对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列:

>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

翻译成循环代码就像下面这样:

L = []
for m in 'ABC':
    for n in '123':
        L.append(m + n)

 运用列表生成式,可以写出非常简洁的代码。例如,列出当前目录下的所有文件和目录名,可以通过一行代码实现:

>>> import os # 导入os模块,模块的概念后面讲到
>>> [d for d in os.listdir('.')] # os.listdir可以列出文件和目录
['.emacs.d', '.ssh', '.Trash', 'Adlm', 'Applications', 'Desktop', 'Documents', 'Downloads', 'Library', 'Movies', 'Music', 'Pictures', 'Public', 'VirtualBox VMs', 'Workspace', 'XCode']
分享到:
评论

相关推荐

    浅谈Python中列表生成式和生成器的区别

    主要介绍了浅谈Python中列表生成式和生成器的区别,是Python入门学习中的基础知识,需要的朋友可以参考下

    python开发入门——列表生成式

    本文主要介绍Python中列表生成式的基本知识和使用 生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): &gt;&gt;&gt; range(1, 11) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 但如果要生成[1×1, 2×2...

    python入门书籍

    一本针对所有层次的Python 读者而...第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python 2D 游戏开发如何利用数据生成交互式的信息图,以及创建和定制简单的Web 应用,并帮读者解决常见编程问题和困惑。

    PYTHON从入门到精通.doc

    列表生成式 生成器 函数式编程 高阶函数 匿名函数 装饰器 偏函数 模块 使用模块 安装第三方模块 使用__future__ 面向对象编程 类和实例 访问限制 继承和多态 获取对象信息 面向对象高级编程 使用__slots__ 使用@...

    Python基础入门教程.zip

    课程简介: 第一课 入门基础 Python简介 为什么选择Python 环境搭建 如何学好编程 常用关键字 ...第5课 文件访问与函数式编程入门 第6课 高级面向对象 第7课 并发编程以及系统常用模块 第8课 常用第三方模块

    Python编程零基础入门

    5-1列表生成式 5-2迭代器 5-3生成器 5-4装饰器 5-5Python编程规范 6-1模块名称空间和导入 6-2模块的执行 6-3os和sys模块介绍和使用 6-4第三方模块的安装 7-1类与面向对象设计OOP 7-2多态、继承和封装 7-3类装饰器 8-...

    Python编程入门经典

    15.11.3 函数式、模板驱动 263 15.12 lxml简介 263 15.13 元素类 263 15.14 使用lxml解析 266 15.15 本章小结 267 15.16 习题 267 第16章 网络编程 269 16.1 理解协议 271 16.1.1 比较协议和程序语言 271 16.1.2 ...

    python生成器推导式用法简单示例

    1.生成器推导式是继列表推导式后的有一中python推导式,他比列表推导式速度更快,占用的内存也更少。 2.使用生成器对象时,可以根据需要将他转化为列表或者元组,也可以是哟个生成器对像__next__()方法或内置函数...

    Python教程大全入门到实战

    list 生成式(列表生成式) 生成器 迭代器和生成器综合例子 面向对象 面向对象的概念 类的定义和调用 类方法 修改和增加类属性 类和对象 初始化函数 类的继承 类的多态 类的访问控制 模块与包 Python 模块简介 模块...

    Python编程入门教程

    三个项目,包括简单的 Python 2D 游戏开发,如何利用数据生成交互式的信息图,以及创建和定制简单的 Web 应用,并帮读者解决常见编程问题和困惑。 本书适合对 Python 感兴趣的任何层次的读者阅读。 本书旨在让你尽快...

    2019千峰Python超详细入门教程(百度云盘分享).docx

    可迭代对象&列表生成式&生成器3.mp4 │ 千锋Python教程:48.斐波拉契数列&迭代器.mp4 │ 千锋Python教程:49.杨辉三角&偏函数&模块概述1.mp4 │ 千锋Python教程:50.杨辉三角&偏函数&模块概述2.mp4 │ ├─千锋...

    python入门到高级全栈工程师培训 第3期 附课件代码

    python入门到高级全栈工程师培训视频学习资料;本资料仅用于学习,请查看后24小时之内删除。 【课程内容】 第1章 01 计算机发展史 02 计算机系统 03 小结 04 数据的概念 05 进制转换 06 原码补码反码 07 物理层和...

    Python入门知识经典总结.docx

    使用列表推导式(List Comprehensions)简化创建和处理列表的操作。 通过enumerate()同时迭代索引和值。 使用zip()合并或同时遍历多个序列。 从列表中同时提取多个元素赋值给多个变量,例如:a, b, c = my_list[:3]...

    《Python编程:从入门到实践》课后练习答案

    本书是享誉全球的Python入门书,影响了超过250万读者。全书分两部分:第一部分介绍用Python编程所必须了解的基本概念,包括强大的Python库和工具,以及列表、字典、if语句、类、文件和异常、代码测试等内容;第二...

    python编程

    三个项目,包括简单的 Python 2D 游戏开发,如何利用数据生成交互式的信息图,以及创建和定制简单的 Web 应用,并帮读者解决常见编程问题和困惑。 本书适合对 Python 感兴趣的任何层次的读者阅读。

    Python编程,核心编程,笨方法学Python

    三个项目,包括简单的Python 2D 游戏开发,如何利用数据生成交互式的信息图,以及创建和定制简单的 Web 应用,并帮读者解决常见编程问题和困惑。 本书适合对Python 感兴趣的任何层次的读者阅读。

    小白IT:Python 入门基础进阶(迭代器/生成器/*装饰器)

    文章目录Python 入门基础进阶迭代器&生成器前引python中for循环的机制迭代器和可迭代协议可迭代协议迭代器协议方法1方法2方法3为什么要使用for循环生成器Python中提供的生成器:生成器Generator:生成器函数生成器的...

    Python编程

    本书是一本针对所有层次的Python ...第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python 2D 游戏开发如何利用数据生成交互式的信息图,以及创建和定制简单的Web 应用,并帮读者解决常见编程问题和困惑。

Global site tag (gtag.js) - Google Analytics