一 列表推导式;快速生成列表,使用方括号[]
>>> lis = [x*x for x in range(1,10)] >>> print(lis) [1, 4, 9, 16, 25, 36, 49, 64, 81]
二 字典推导式;使用大括号{}
>>> dic = {x: x**2 for x in (2,4,6)}
>>> dic
{2: 4, 4: 16, 6: 36}
>>> type(dic)
<class 'dict'>
也可做集合推导式
>>> a = {x for x in 'abracadagra' if x not in 'abc'}
>>> a
{'g', 'd', 'r'}
>>> type(a)
<class 'set'>
三 无元组推导式,如使用类似方法生成元组,需显示调用元组的类型转换函数tuple。
>>> tup = tuple(x for x in range(9)) >>> print(tup) (0, 1, 2, 3, 4, 5, 6, 7, 8) >>> print (type(tup)) <class 'tuple'> >>> type(tup) <class 'tuple'>
四 关于lambda的两道题
>>> result = [lambda x:x+i for i in range(10)] >>> print(result[0](10)) 19 >>> print(result[1](10)) 19 其中,i是全局变量,调用时动态传入参数,result[index]值为9 >>> result = [lambda x,i=i:x+i for i in range(10)] >>> print (result[0](10)) 10 >>> print (result[1](10)) 11 >>> print (result[2](10)) 12 不引用上层变量,调用循环的值。
浙公网安备 33010602011771号