python基础学习七: 列表生成式
2016-02-18 09:44
633 查看
#生成列表 #要生成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] #复杂表达式 #使用for循环的迭代不仅可以迭代普通的list, #还可以迭代dict。 d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } 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 拼接成一个字符串。 ''' <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] #只取偶数的平方 >>> [x * x for x in range(1, 11) if x % 2 == 0] [4, 16, 36, 64, 100] #多层表达式 #for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。 >>> [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)
相关文章推荐
- Python利用Nagios增加微信报警通知的功能
- Python 获取Google+特定用户最新动态
- python基础学习七: 迭代
- Python将数组(矩阵)存成csv文件,将csv文件读取为数组(矩阵)
- Python之路【第十一篇续】前端之CSS补充
- Python学习之day4
- python流程控制语法
- python-Day4-迭代器-yield异步处理--装饰器--斐波那契--递归--二分算法--二维数组旋转90度--正则表达式
- Python利用Nagios增加微信报警通知的功能
- python装饰器与递归算法详解
- 使用Python的PIL模块来进行图片对比
- 讲解Python的Scrapy爬虫框架使用代理进行采集的方法
- 使用Python的urllib2模块处理url和图片的技巧两则
- 使用Python生成随机密码的示例分享
- 以一个投票程序的实例来讲解Python的Django框架使用
- 在Ubuntu系统下安装使用Python的GUI工具wxPython
- 使用Python简单的实现树莓派的WEB控制
- Python3.x和Python2.x的区别
- [Python开发] sphinx学习
- Python重磅出击:19步铸造Python大师!