Python - 列表生成式

列表生成式

一个用来生成列表的特定语法形式的表达式。可以对一组元素进行过滤或得到对列表元素进行处理后得到的结果,可以快速的根据已存在的可迭代对象推导出一个新的list。

生成式的基本语法:

[expression for iter_var in iterable]
[expression for iter_var in iterable if cond_expr]



第一种语法:

首先迭代 iterable 里所有内容,每一次迭代,都把 iterable 里相应内容放到iter_var 中,
再在表达式expression 中应用该 iter_var 的内容,最后用表达式的计算值生成一个列表。



第二种语法:

加入了判断语句,只有满足条件的内容才把 iterable 里相应内容放到 iter_var 中,再在表达式expression 中应用该 iter_var 的内容,
最后用表达式的计算值生成一个列表。



先从简单的例子开始:

生成一个10个元素的数据,每个分别对应 1-10的两倍。

按照平常基本的思路,定义一个空列表 a ,使用for 循环遍历1-10,遍历出来的数乘 2 ,通过append 追加到列表中。

a = []
for i in range(1, 11):
    a.append(i*2)
print(a)



使用列表生成式的做法:

list = [x*2 for x in range(1, 11)]
print(list)

看生成式的语法:x 先进行遍历 1- 10,表达式为 x*2。



带if判断:

对一个列表里面的数据筛选,比如:[1, 9, -2, 4, -5, 11, -7, 3],找出大于0的数,按普通思路可以for循环挨个判断,符合条件的放到新的列表。

l = [1, 9, -2, 4, -5, 11, -7, 3]
a = []
for i in l:
    print(i)
    if i > 0:
        a.append(i)
print(a)



使用列表生成式:

l = [1, 9, -2, 4, -5, 11, -7, 3]
d = [x for x in l if x >0]
print(d)

由此可见,列表生成式代码简洁高效。

练习:
生成一个100以内所有偶数的列表?

l = [x for x in range(1, 101) if not x % 2]
print(l)
ll = [x for x in range(1, 101) if (x+1) % 2]
print(ll)

Python - 列表生成式

上一篇:C++智能指针


下一篇:Linux下反编译java的class文件