列表推导式
问题:我该如何快速生成一个列表[date1,date2,date3,…]?
普通方法:
k=[]
for i in range(100):
l.append('data{}'.format(i))
print(k)
推导式:
new_k = [ 'data{}'.format(i) for i in range(100)]
print(new_k)
我们还可以对其做一些限制:
new_k = [ 'data{}'.format(i) for i in range(100) if i%2==0]
print(new_k)
字典推导式
问题:快速创建这样一个字典{1:1、2:4、3:9、4:16、5:25、6:36、7:49、8:64、9:81、10:100}
普通方法:
square_dict = dict()
for num in range(1, 11):
square_dict[num] = num*num
print(square_dict)
推导式方法:
square_dict = {num: num*num for num in range(1, 11)}
print(square_dict)
相信看了这张图片大家应该明白对应位置的参数的含义了吧
字典推到式还可以这样写:
old_price = {'milk': 5, 'coffee': 10, 'bread': 8}
# 该代码目的是实现将人民币价格转换为英镑
dollar_to_pound = 0.1097 # 人民币:英镑9.1134:1
new_price = {item: value*dollar_to_pound for (item, value) in old_price.items()}
print(new_price)
输出结果:
{'milk': 0.5485, 'coffee': 1.097, 'bread': 0.8776}
字典推导式同样可以有条件:
original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
even_dict = {k: v for (k, v) in original_dict.items() if v % 2 == 0}
print(even_dict)
输出:
{'jack':38,'michael':48}
不满足条件,key连同value一并删除。
集合推导式
c = {i for i in [1,1,1,2,3,3,3]}
结果:
{1, 2, 3}
这里依然是集合的性质,删除相同元素