推导式可以帮助我们快速的创建一些简单的容器

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)]))

 

posted on 2022-11-02 21:36  阿明明  阅读(41)  评论(0)    收藏  举报