基本数据类型的推导式

处理序列中的数据时,比如提取其中的值或者根据某种标准来对序列做删减或替换使用推导式就非常方便.

列表推导式:

1
2
3
4
5
6
# 获取列表中大于0和小于0的数,返回的结果也要是列表
info = [1,2,3,-1,-2,-3]
need_info = [i for i in info if i > 0]
need_info2 = [i for i in info if i < 0]
print(need_info)
print(need_info2)
1
2
[1, 2, 3]
[-1, -2, -3]

如果先去遍历然后再重组就把代码写的繁琐,使用列表推导式去完成筛选,就显得干净利落.

1
2
3
4
5
# 将不符合条件的元素替换,返回的结果也得是列表
info = [1,2,3,-1,-2,-3]
# 将小于0的数替换成0
need_info = [i if i > 0 else 0 for i in info]
print(need_info)
1
[1, 2, 3, 0, 0, 0]

我真的想不出还有比这更方便快速的方法了.

字典推导式:

1
2
3
4
5
6
7
8
9
10
# 获取股价大于200的公司
price = {
'ACME': 45.23,
'AAPL': 612.78,
'IBM': 205.55,
'HPQ': 37.20,
'FB': 10.75
}
com = {key:value for key, value in price.items() if value > 200}
print(com)
1
{'AAPL': 612.78, 'IBM': 205.55}

除了字典和列表推导式,还有元组推导式以及利用生成器来筛选数据,如果考虑到性能的话,还需要对其他指标进行计算,不管性能如何,至少从书写方式上,也不会去选择写法繁琐的方式去实现想要的功能,