一 列表推导式;快速生成列表,使用方括号[]

>>> 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

不引用上层变量,调用循环的值。

 

posted on 2018-08-20 10:44  voldermorter  阅读(82)  评论(0)    收藏  举报