推导式详细格式
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整除的数
multiples = [i for i in range(30) if i % 3 is 0]print(multiples)
30以内所有能被3整除的数的平方
def squared(x):return x*xmultiples = [squared(i) for i in range(30) if i % 3 is 0]print(multiples)
找到嵌套列表中名字含有两个及以上‘a’的所有名字
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对调
dic1 = {'a':1,'b':2}dic2 = {dic1[k]: k for k in dic1}print(dic2)
合并大小写对应的value值,将k统一成小写
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)
集合推导式
计算列表中每个值的平方,自带去重功能
l = [1,2,3,4,1,-1,-2,3]squared = {x**2 for x in l}print(squared)
练习题
- 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
- 求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表
lst=[(x,y) for x in range (0,6) if x %2 ==0 for y in range (0,6) if y %2 ==1]print(lst)#结果[(0, 1), (0, 3), (0, 5), (2, 1), (2, 3), (2, 5), (4, 1), (4, 3), (4, 5)]
