您的位置:首页 > 编程语言 > Python开发

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

2017-09-10 21:59 731 查看
本篇文章介绍列表推导式与序列解包。

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 1
alist=[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,3
print x,y,z运行结果:
1 2 3

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

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

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

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

1 3 2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: