推导式可以帮助我们快速的创建一些简单的容器
1.列表推导式
定义:
[i for i in range(num) if 条件]
案例:
print([i for i in range(10) if i > 5]) # [6, 7, 8, 9] print([i + 30 for i in range(1, 20) if 5 < i < 15]) # [36, 37, 38, 39, 40, 41, 42, 43, 44] print([(i, i+1, i+2) for i in range(5)]) # [(0, 1, 2), (1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6)]
2.集合推导式
定义:
{i for i in range(num) if 条件}
案例
print({i for i in range(10) if i > 5}) # {8, 9, 6, 7} print({i + 30 for i in range(1, 20) if 5 < i < 15}) # {36, 37, 38, 39, 40, 41, 42, 43, 44} print({(i, i + 1, i + 2) for i in range(5)}) # {(1, 2, 3), (3, 4, 5), (2, 3, 4), (4, 5, 6), (0, 1, 2)}
3.字典推导式
定义:
{i:i for i in range(num) if 条件}
案例:
print({i:i+1 for i in range(10) if i > 6}) #{7: 8, 8: 9, 9: 10} print({i:(i+20,i+21,i+22) for i in range(5)}) # {0: (20, 21, 22), 1: (21, 22, 23), 2: (22, 23, 24), 3: (23, 24, 25), 4: (24, 25, 26)}
4.元组推导式
元组推导式生成的不是一个元组,而是一个生成器,针对生成器请查看上一个随笔
gen = (i for i in range(100)) print(gen) # <generator object <genexpr> at 0x7fec4008f580>
面试题:请用一行代码实现一个九九乘法表
print('\n'.join([' '.join([f'{j + 1}*{i}={i * (j + 1)}'for j in range(i)]) for i in range(1, 10)]))
浙公网安备 33010602011771号