Python开发学习笔记(11) - 列表生成式
2016-11-18 15:52
519 查看
列表生成式
列表生成式列表生成式是Python中特有的写法,把要生成的元素放到前面,后面跟for循环,就可以用非常简洁的代码生成复杂的list了。
1.普通的列表生成可以直接用range(1,101)
print range(1,101) >>[1,2,3,4....100]
2.生成复杂的列表, 如需要生成 [1*1, 2*2, 3*3 … 10*10]的列表。
1. 比较繁琐的方法是循环:
L = [] for x in range(1,11): L.append(x * x) print L # 结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2. 比较简单的方法是列表生成式:
print [x * x for x in range(1, 11)] # 结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 如需要生成列表 [1x2, 3x4, 5x6, 7x8, ..., 99x100] print [x*(x+1) for x in range(1,100,2)] # range(1,100,2)可以生成list [1, 3, 5, 7, 9,...]
复杂表达式
使用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 拼接成一个字符串。
效果如下:
如果需要把不及格的分数标记成红色:
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } def generate_tr(name, score): if score < 60: return '<tr><td>%s</td><td style="color:red">%s</td></tr>' % (name, score) return '<tr><td>%s</td><td>%s</td></tr>' % (name, score) tds = [generate_tr(name, score) for name, score in d.iteritems()] print '<table border="1">' print '<tr><th>Name</th><th>Score</th><tr>' print '\n'.join(tds) print '</table>'
条件过滤
列表生成式的 for 循环后面可以加上 if 判断,只有 if 判断为 True 的时候,才把循环的当前元素添加到列表中。>>> [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]
相关文章推荐
- Python学习笔记-列表的条件过滤生成
- 07-python学习笔记-列表生成式
- python学习笔记之切片(slice)、列表生成式
- Python3学习笔记(五)--列表生成式
- Python学习笔记---元组(tuple)、列表(list)、字典(dict)
- Python学习笔记2:构造序列:列表推导和生成器表达式
- python学习笔记列表和元组(三)
- python学习笔记3--列表,元组
- 学习笔记:Python中的列表与元组
- python学习笔记3——列表和元组
- Python Web开发 之Django框架入门学习笔记(一)——安装和初步使用
- 【python学习笔记】Python数据结构(列表,元组,字典,集合)
- Django 开发学习笔记(6)- 开发博客主页和所有话题列表页面
- Python高级特性(切片 迭代 列表生成式 生成器 迭代器)学习笔记
- Python学习笔记5_列表推导式与序列解包
- 进程和线程的基础知识——Python学习笔记11
- 初学Python的学习笔记3----递归函数、切片、迭代和列表生成式
- <Python高级全栈开发工程师-1>学习过程笔记【181-184】正则表达式 <特殊字符><函数>
- <python全栈开发基础>学习过程笔记【17d】生成器
- python学习笔记:第五天( 列表、元组)