# 推导式 ## 推导式详细格式 ```plain variable = [out_exp_res for out_exp in input_list if out_exp == 2] out_exp_res:  列表生成元素表达式,可以是有返回值的函数。 for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中。 if out_exp == 2:  根据条件过滤哪些值可以。 ``` ## 列表推导式 30以内所有能被3整除的数 ```python multiples = [i for i in range(30) if i % 3 is 0] print(multiples) ``` 30以内所有能被3整除的数的平方 ```python def squared(x): return x*x multiples = [squared(i) for i in range(30) if i % 3 is 0] print(multiples) ``` 找到嵌套列表中名字含有两个及以上‘a’的所有名字 ```python fruits = [['peach','Lemon','Pear','avocado','cantaloupe','Banana','Grape'], ['raisins','plum','apricot','nectarine','orange','papaya']] print([name for lst in fruits for name in lst if name.count('a') >= 2]) ``` ## 字典推导式 将一个字典的key和value对调 ```python dic1 = {'a':1,'b':2} dic2 = {dic1[k]: k for k in dic1} print(dic2) ``` 合并大小写对应的value值,将k统一成小写 ```python dic1 = {'a':1,'b':2,'A':4,'Y':9} dic2 = {k.lower():dic1.get(k.lower(),0) + dic1.get(k.upper(),0) for k in dic1.keys()} print(dic2) ``` ## 集合推导式 计算列表中每个值的平方,自带去重功能 ```python l = [1,2,3,4,1,-1,-2,3] squared = {x**2 for x in l} print(squared) ``` ## 练习题 1. 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 2. 求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表 3. 将1000以内的素数放入一个列表中