Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
推导式包括列表推导式、字典推导式、集合推导式和生成器推导式。
# 推导式
# [表达式 for 变量 in 列表 if 条件]
# [out_exp_res for out_exp in input_list if condition]
multiples = [i for i in range(30) if i % 3 == 0] # 计算 30 以内可以被 3 整除的整数
print(multiples) # [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
tmp6=[i if i%3 ==0 else i+(3-i%3) for i in range(16) ]
print(tmp6) # [0, 3, 3, 3, 6, 6, 6, 9, 9, 9, 12, 12, 12, 15, 15, 15]
# [表达式 for 变量 in 列表]
# [out_exp_res for out_exp in input_list]
tmp = [i for i in range(10)]
print(tmp) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# { key_expr: value_expr for value in collection }
dic1 = {x:x**2 for x in (2,4,6)}
print(dic1) # {2: 4, 4: 16, 6: 36}
tmp1 = ['Tom','Mike','John','Ann']
dic2 = {key:len(key) for key in tmp1}
print(dic2) # {'Tom': 3, 'Mike': 4, 'John': 4, 'Ann': 3}
# { expression for item in Sequence }
tmp2 = {i**2 for i in (2,3,4)}
print(tmp2) # {16, 9, 4}
# { expression for item in Sequence if conditional }
tmp3 = {i for i in [3,1,2,5,6] if i>2}
print(tmp3) # {3, 5, 6}
tmp7={i if i>2 else 3 for i in [3,1,2,5,6]}
print(tmp7) # {3, 5, 6} 集合会自动去重
# (expression for item in Sequence )
tmp4 = (x for x in range(1,10))
print(tmp4) # <generator object <genexpr> at 0x00000252680C4A00> 返回的是生成器对象
print(tuple(tmp4)) # (1, 2, 3, 4, 5, 6, 7, 8, 9)
# (expression for item in Sequence if conditional )
tmp5 = (x for x in range(1,11) if x % 3 ==0)
print(tuple(tmp5)) # (3, 6, 9)
tmp8 = ['python','test1','test2']
tmp9 = [word.title() if word.startswith('p') else word.upper() for word in tmp8]
print(tmp9) # ['Python', 'TEST1', 'TEST2']