"""推导式先找for 循环 然后再是 for循环后的条件 然后再是最前面的结果集"""
"""1.列表推导式"""
# 普通推导式
print([i for i in range(5)]) # [0, 1, 2, 3, 4]
# 筛选模式
print([i for i in range(5) if i > 2]) # [3, 4]
# 双条件 一个一个往后走
print([i for i in range(5) if i > 2 if i < 4]) # [3]
# 结构模式 三元运算符 for 循环 然后循环后的筛选条件 然后 三元运算
print([i if i > 3 else "假的" for i in range(5) if i > 2]) # ['假的', 4]
# 双重for循环
print([i for i in range(4) for j in range(2)]) # [0, 0, 1, 1, 2, 2, 3, 3]
# 等价于
my_list = []
for i in range(4):
for j in range(2):
my_list.append(i)
print(my_list)
"""2.集合推导式 其余方法参见列表推导式"""
print({i for i in range(5)}) # {0, 1, 2, 3, 4}
"""3.字典推导式"""
print({i: i + 2 for i in range(5)}) # {0: 2, 1: 3, 2: 4, 3: 5, 4: 6}
"""4.生成器推导式元组没有推导式"""
print((i for i in range(5))) # at 0x000002685594EAC0>
g = (i for i in range(5))
print(next(g))
print(next(g))
print(next(g))
print(next(g))