Python学习笔记5_列表推导式与序列解包

来源:互联网 发布:手机添加网络 编辑:程序博客网 时间:2024/06/08 18:34

本篇文章介绍列表推导式与序列解包。

1. 列表推导式

列表推导式即列表的元素部分是一个表达式。格式为:变量名后面跟上表达式。例如:

alist=[x for x in range(10)]print alist
运行结果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

可见,它的作用在于对元素的控制或筛选。

#-*- coding: UTF-8 -*-#输出所有大于0的数alist=[-1,-3,4,-6,2,10]blist=[x for x in alist if x>0]print blist

运行结果:

[4, 2, 10]

想要更方便又不显得冗杂,可以将列表推导式与函数结合。

#-*- coding: UTF-8 -*-#输出所有素数def prime(x):    "'判断x是否为素数"    flag=0    for i in range(2,x/2+1):        if x%i==0:            flag+=1    if flag==0:        return 0    else:        return 1alist=[3,4,5,6,7,8,9,10,11]blist=[x for x in alist if prime(x)==0 ]print blist
运行结果:

[3, 5, 7, 11]

列表推导式还可以进行嵌套。

a=[[1,2,3],[1,2,3],[1,2,3]]b=[x for b in a for x in b]print b
运行结果:
[1, 2, 3, 1, 2, 3, 1, 2, 3]

关键:弄清逻辑,第一个for是那个变量  in 哪个变量


2.序列解包

序列解包就是,同时给多个变量赋值

x,y,z=1,2,3print x,y,z
运行结果:

1 2 3
其中要注意的是字典。字典这个东西比较麻烦,因为涉及到item,keys与values这三个关键字,所以在很多地方都要额外注明,序列解包的应用亦然。

序列解包应用于字典时,默认的操作对象是key。

adict={'a':1,'b':2,'c':3}x,y,z=adictprint x,y,zx,y,z=adict.items()print x,y,zx,y,z=adict.values()print x,y,z
运行结果:

a c b
('a', 1) ('c', 3) ('b', 2)
1 3 2

原创粉丝点击