推导式详细格式

  1. variable = [out_exp_res for out_exp in input_list if out_exp == 2]
  2. out_exp_res:  列表生成元素表达式,可以是有返回值的函数。
  3. for out_exp in input_list:  迭代input_listout_exp传入out_exp_res表达式中。
  4. if out_exp == 2:  根据条件过滤哪些值可以。

列表推导式

30 以内所有能被 3 整除的数

  1. multiples = [i for i in range(30) if i % 3 is 0]
  2. print(multiples)

30 以内所有能被 3 整除的数的平方

  1. def squared(x):
  2. return x*x
  3. multiples = [squared(i) for i in range(30) if i % 3 is 0]
  4. print(multiples)

Python
Copy
找到嵌套列表中名字含有两个及以上‘a’的所有名字

  1. fruits = [['peach','Lemon','Pear','avocado','cantaloupe','Banana','Grape'],
  2. ['raisins','plum','apricot','nectarine','orange','papaya']]
  3. print([name for lst in fruits for name in lst if name.count('a') >= 2])

Python
Copy

字典推导式

将一个字典的 key 和 value 对调

  1. dic1 = {'a':1,'b':2}
  2. dic2 = {dic1[k]: k for k in dic1}
  3. print(dic2)

Python
Copy
合并大小写对应的 value 值,将 k 统一成小写

  1. dic1 = {'a':1,'b':2,'A':4,'Y':9}
  2. dic2 = {k.lower():dic1.get(k.lower(),0) + dic1.get(k.upper(),0) for k in dic1.keys()}
  3. print(dic2)

Python
Copy

集合推导式

计算列表中每个值的平方,自带去重功能

  1. l = [1,2,3,4,1,-1,-2,3]
  2. squared = {x**2 for x in l}
  3. print(squared)

Python
Copy

练习题

  1. 过滤掉长度小于 3 的字符串列表,并将剩下的转换成大写字母
  2. 求 (x,y) 其中 x 是 0 - 5 之间的偶数,y 是 0 - 5 之间的奇数组成的元祖列表