在平时,我们若想达处理某一段数据以得到一个新的数据集合,通常我们会利用for循环用上几行代码来逐条处理目标数据,
而推导式能非常简洁的构造一个新的数据集合:只用一条简洁的表达式即可对得到的元素进行数据筛选或者转换变形。
常用的推导式有列表推导式,字典推导式。
- 列表推导式
列表推导式格式:
[表达式 for 变量 in 列表] 或者
[表达式 for 变量 in 列表 if 条件]
过滤条件可有可无,取决于实际应用,只留下表达式;相当于下面这段for循环:
res = list()
for item in items:
if condition:
res.append(item)
简单地看上述代码,会不会觉得如此一个小功能的实现竟然会利用四行代码来实现,会不会有点小题大做了?
现在我们想实现一个简单的功能,筛选1-10里面能够被3整除的数字:
In [1]: Triple_List = [i for i in range(1, 11) if i % 3 == 0]
In [2]: Triple_List
Out[2]: [3, 6, 9]
怎么样,只用一行代码就实现了这个基本功能,看起来是不是简洁一目了然!
接下来,我们来实现一个双循环的列表推导式,将1-10里面能够被3整除的数字成倍输出:
In [3]: Double_Cycle_List = [j for i in range(2) for j in range(1, 11) if j % 3 == 0]
In [4]: Double_Cycle_List
Out[4]: [3, 6, 9, 3, 6, 9]
- 字典推导式
字典推导式格式:
{表达式 for 变量 in 迭代器} 或者
{表达式 for 变量 in 迭代器 if 条件}
现在展示一个简单的字典推导式案例,将字典的键全部转换为大写字母:
In [5]: d1 = {'a': 10, 'b': 20 , 'c': 30}
In [6]: d2 = {k.upper(): v for k, v in d1.items()}
In [7]: d2
Out[7]: {'A': 10, 'B': 20, 'C': 30}
如果大家对python感兴趣的话,可以关注我,希望有幸与各位一起在python这门语言上每天更进一步!