列表推导式和生成器表达式

  • 迭代器的优点:
    • 节省内存.
    • 惰性机制.
    • 单向,不可逆
  • 把列表解析的[]换成()得到的就是生成器表达式
    • l = [i for i in range(10)]
    • print(l)
    • l1 = ['选项%s'%i for i in range(10)]
    • print(l1)
  • 列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存
  • Python不但使用迭代器协议,让for循环变得更加通用。大部分内置函数,也是使用迭代器协议访问对象的。例如, sum函数是Python的内置函数,该函数使用迭代器协议访问对象,而生成器实现了迭代器协议.
    • sum(x ** 2 for x in range(4))
  • 下面是一个以列表推导式为例的推导式详细格式,同样适用于其他推导式。

  

# 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:  根据条件过滤哪些值可以。

 

#字典推导式
#将字典的key 与value互换
dic={1:"a",2:"B"}
dic_new={dic[k]:k for k in dic}
print(dic_new)
#将字典key小写,合并Value
dic={'a': 1, 'B': 2,"c":87,"A":66}
dic_lower={k.lower():(dic.get(k.lower(),0)+dic.get(k.upper(),0)) for k in dic}
print(dic_lower)
#集合推导式
#计算列表中每个值的平方,自带去重功能
seta={x**2 for x in [1,-1,3,6,-6]}
print(seta)

                                                                                                        

猜你喜欢

转载自www.cnblogs.com/zxmbky/p/9203982.html
今日推荐