python语法简洁,推导式就是一个很好的体现。
推导式(又称解析式)是 Python 独有的一种特性。使用推导式可以从一个数据序列构建一个新的数据序列。推导式从外形上来看像是for循环的一种变形写法。本节我们看一下列表推导式、集合推导式、字典推导式,你可能好奇是否有元组推导式,当你试图写一个元组推导式的时候其实结果是一个生成器,生成器可以参考python实现生成器。
1、列表推导式
[表达式 for 迭代对象的元素 in 可迭代对象 if 条件表达式 ] # if 条件表达式可以省略
# -*- coding: utf-8 -*-
new_date = [x**2 for x in [1,2,3,4] if x > 2]
new_date2 = [x**2 for x in [1,2,3,4]]
print(new_date)
print(new_date2)
[9, 16]
[1, 4, 9, 16]
2、集合推导式
{ 表达式 for 迭代对象的元素 in 可迭代对象 if 条件表达式 } # if 条件表达式可以省略
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
new_date = {x**2 for x in [1,2,3,4] if x > 2}
new_date2 = {x**2 for x in [1,2,3,4]}
print(new_date)
print(new_date2)
{16, 9}
{16, 1, 4, 9}
3、字典推导式
字典推导式的长相和集合推导式完全相同,这个并不奇怪,因为python中输出字典或者输出集合都是用{ }包围起来的。
{表达式 for 迭代对象的元素 in 可迭代对象 if 条件表达式} # if 条件表达式可以省略
# -*- coding: utf-8 -*-
dic = {'age':18,'name':'老王'}
new_date = {v:k for k,v in dic.items() if v == 18}
new_date2 = {v:k for k,v in dic.items()}
print(new_date)
print(new_date2)
{18: 'age'}
{18: 'age', '老王': 'name'}