list comprehension列表解释可以方便的实现列表的元素操作,还能结合if
、else
进行条件判断。
(1)生产序列
vec1 = [num for num in range(20)]
# list里面是tuple
vec2 = [(x,y) for x in range(4) for y in range(5)]
# list里面是dict
vec3 = [[{'a':x,'b':y} for x in range(4) for y in range(5)]
(2)带if/else
判断
x=np.linspace(0,np.pi,50)
y=sin(x)
boo = [ i if i<0.8 else 0.8 for i in y]
plt.plot(boo)
plt.show()
(3)处理坐标数据
数学软件sage的绘图函数如scatter_plot
,line
等需要传递一个形如 [[x1,y1],[x2,y2],...[xn,yn]] 的列表作为参数,代表所绘制图像的 x , y 坐标轴,这时用列表解释很方便的实现,下面代码运行于Sage8.0
x=np.linspace(0,np.pi,50)
y=sin(x)
vec = [[x[i],y[i]] for i in range(int(len(x)))]
a=line(vec)
b=scatter_plot(vec)
show(a+b) #同时绘制a和b