Python推导式(列表推导式、字典推导式、集合推导式)

推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导,在Python2和3中都有支持:

  • 列表(list)推导式
  • 字典(dict)推导式
  • 集合(set)推导式

列表推导式

以求从1-10所有偶数的平方为例,如果学习过Java或者C语言,按照基本写法可以写作:

alist = []
for i in range(1,11):
    if i % 2 == 0 :
        alist.append( i * i )
print (alist)
# Output [4, 16, 36, 64, 100]

然而在Python中可以使用推导式更简洁的实现功能:

blist = [i*i for i in range(1,11) if i % 2 == 0]
print blist
# Output [4, 16, 36, 64, 100]

# 列表推导式书写形式:
# [表达式 for 变量 in 列表]    或者  [表达式 for 变量 in 列表 if 条件]

字典推导式

以将字典赋值为空为例,基本写法为:

z_num = {}
for i in dict_name:
    z_num[i] = 0 

Python中的字典推导式可以将该句简化为:

z_num = {i:0 for i in dict_name} 
#i为key,0为value,可以快速更换key和value

集合推导式

跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}:

squared = {x**2 for x in [1, 1, 2]}
print(squared)
# Output: set([1, 4])
添加新评论