python--列表生成式--8

原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/

一.生成列表

要生成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。

写列表生成式时,把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把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 的时候,才把循环的当前元素添加到列表中。

四.多层表达式

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)
时间: 2024-11-03 21:10:43

python--列表生成式--8的相关文章

python 列表生成式

列表特性:列表是一次性生成的 a = [1,2,3,4,5,6,7,8,9] 或 [ i*2 for i in range(10)]  ###--->列表生成式 ===[2,4,6,8,10,12,14,16,18,20]=== 两个列表的区别: 1列表是写死的,2列表可以里面做一些操作把相应的东西输出出来 列表生成式目的是为了使代码更简洁,且可以实现更复杂的功能,如将i的值传至函数中 [fun(i)  for i in range(10)] 生成式:通过生成式可以直接创建一个列表,但受内存大小

使用PYTHON列表生成式过滤数据

python的列表生成式是一个很有用生成列表(List)的表达式.其中一个应用是作为列表的过滤器使用 例如 从一个列表中过滤掉奇数使用下面的语句就可以 [item for item in [1,2,3,4,5,6,7] if item % 2 == 0] 反过来,去掉偶数也是同样的道理 [item for item in [1,2,3,4,5,6,7] if item % 2 != 0]

python列表生成式&amp;生成器&amp;迭代器

一.列表生成式 什么是列表生成式? 列表生成式是快速生成列表的一种方式.(貌似有些废话) 更专业点的说法:列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 在python2.7里 举个例子,要生成list [1,2,3,4,5],可以用range(1,6) >>> range(1,6) [1, 2, 3, 4, 5] 但是如果要生成[1x1,2x2,3x3,4x4,5x5]怎么做呢? 普通青年做法: >>&

初学Python——列表生成式、生成器和迭代器

一.列表生成式 假如现在有这样一个需求:快速生成一个列表[1,2,3,4,5,6,7,8,9,10],该如何实现? 在不知道列表生成式的情况下,可能会这样写: a=[1,2,3,4,5,6,7,8,9,10] 如果要每个值+1呢?可能会这样: for index,i in enumerate(a): a[index] +=1 print(a) 不够方便,这里讲一个快速生成列表的方法:列表生成式.意思就是立即生成列表. 生成一个1到10的列表: a = [i+1 for i in range(10

【370】Python列表生成式(for 写入一行)

参考: python用列表生成式写嵌套循环的方法_python_脚本之家 参考: python之列表生成式 - 旷野足迹 - 博客园 对于读取Twitter数据最终会得到一个超级复杂的json文件, 也就是一堆字典嵌套, 因此找到想要的内容需要多几层嵌套, 而使用列表生成式可以有效减少代码数量, 主要就是将多行的循环或者判断写入一行, 需要注意的是只是将本来属于最后一行的内容提前, 而对于多层嵌套来说, 整体的顺序不变~ 举个栗子~ >>> a = [[1, 2, 3], [4, 5,

python列表生成式、生成器,迭代器与二分法

一.列表生成式 列表生成式是快速生成一个列表的一些公式 列表生成式的书写格式:[x*x for x in range(1 , 11)] 列表生成式语法是固定的,[]里面for 前面是对列表里面数据的运算操作,后面跟平常for循序一样遍历去读取.运行后会自动生成新的列表 一般列表生成式 list1 = list(range(1,10)) #不使用列表生成式生成列表 list2 = [x for x in range(1,10)] #使用列表生成式生成列表 print(list1) print(li

Python 列表生成式,函数,字符串,文件操作,生成器

知识点 1 ==与is区别:Python中对象包含的三个基本要素,分别是:id(身份标识).type(数据类型)和value(值). ==只比较值,而is比较身份标识也就是内存地址,而且在is比较中关于数据类型也就是只有数值型和字符串型的情况下,a is b才为True,当a和b是tuple,list,dict或set型时,a is b为False. 2 浅拷贝和深拷贝:需要使用copy模块 浅拷贝:copy()方法实现 1.对于不可变类型 Number String Tuple,浅复制仅仅是地

python列表生成式、列表推导式

运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁. 格式 [x for x in 内容] [x for x in 内容 if 条件] 1:要把生成的元素x放到前面,执行的时候,先执行后面的for循环 2:后面跟上for循环 可以有多个for循环,也可以在for循环后面加个if条件 3:for循环后面可以是任何方式的迭代器(元组,列表,生成器..)只要可以迭代的对象中有一个值. 1:单循环列表生成式 字符串生成列表 print([x for x in

Python列表生成式练习

1 ''' 2 如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,所以列表生成式会报错 3 使用内建的isinstance函数可以判断一个变量是不是字符串: 4 返回True 或 False 5 ''' 6 L1 = ['Hello', 'World', 18, 'Apple', None] 7 print([L2.lower() for L2 in L1 if isinstance(L2, str) == True])

Python列表生成式和生成器

[1]列表生成器:列表生成式就是一个用来生成列表的特定语法形式的表达式. 1.基础语句结构:[exp for iter_var in iterable例如:a=[f(x) for x in range(10)] 2.工作过程: 迭代iterable中的每个元素:每次迭代都先把结果赋值给iter_var,然后通过exp得到一个新的计算值:最后把所有通过exp得到的计算值以一个新列表的形式返回. 相当于这样的过程:L = [] for iter_var in iterable: L.append(e