列表推导式把原本较为复杂的代码尽可能的简单化
举俩个例子:
1.此处我们将列表里的数字都乘3
vec1 = [2,4,6]
a = [3*x for x in vec1]
print(a)
# 结果:[6, 12, 18]
2.当然也可以将返回的结果放在一个新的列表中,返回的结果可以用变量或者多个变量来接受
vec2 = [3,6,9]
b = [x,3*x for x in vec2]
print(b)
# 结果:[[3, 9], [6, 18], [9, 27]]
简单理解:
列表推导式提供了从序列创建列表的简单途径,每个列表推导式都在for后面更一个表达式,然后有零到多个for或if子句(if语句其过滤作用,下面代码会有说明),而返回的结果for和if环境生成出来的列表。同样如果想要推导出一个元组,就必须得使用括号。
实例:
freshfruit = [' banana', ' loganberry ', 'passion fruit ']
fruit = [weapon.strip() for weapon in freshfruit]
print(fruit)
# 结果:['banana', 'loganberry', 'passion fruit']
下面我们用if子句作为过滤器
vec3 = [2,4,5]
d = [3*x for x in vec3 if x > 3]
print(d)
# 结果:[12,15]
vec4 = [1,3,6]
e = [3*x for x in vec4 if x <2]
print(e)
# 结果:[3]
以下是一些关于循环的技巧
vec1 = [2, 4, 6]
vec2 = [4, 3, -9]
print([vec1[i]*vec2[i] for i in range(len(vec1))])
# 结果: [8, 12, -54]
print([x*y for x in vec1 for y in vec2])
# 结果:[8, 6, -18, 16, 12, -36, 24, 18, -54]
print([x+y for x in vec1 for y in vec2])
# 结果:[6, 5, -7, 8, 7, -5, 10, 9, -3]