首页 > 编程语言 > 详细

python基础--python六剑客

时间:2019-10-04 21:43:16      阅读:63      评论:0      收藏:0      [点我收藏+]
python六剑客:filter过滤器、map遍历计算、lambda匿名函数、reduce累加、切片、推导列表
 
filter

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

>>> list(filter(lambda x:x%2,[1,2,3,4]))
[1, 3]
>>> list(filter(lambda x:x>=A and x <=Z,"AaBbCc"))
[A, B, C]
栗子:
>>> def is_odd(n):
... return n%2==1
...
>>> tmplist = filter(is_odd,[1,2,3,4,5,6,7,8,9,10])
>>> newlist = list(tmplist)
>>> print(newlist)
[1, 3, 5, 7, 9]

 

 
map

map() 会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

map(function,iterable,...)
function:函数
iterable:一个或多个序列
例1:
>>> list(map(lambda x:str(x)+"*",[1,2,3,4]))
[1*, 2*, 3*, 4*]
例2:
>>> list(map(lambda x:x ** 2,[1,2,3,4]))   #使用lambda匿名函数
[1, 4, 9, 16]
例3:
>>> def square(x):
...     return x**2
...
>>> map(square,[1,2,3,4])    #py3map返回迭代器
<map object at 0x000001199BF08A90>
>>> list(map(square,[1,2,3,4]))
[1, 4, 9, 16]
例4:
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
<map object at 0x000001199BF08A58>
>>> list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
[3, 7, 11, 15, 19]

 

lambda匿名函数

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

lambda 只是一个表达式,函数体比 def 简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

 

 

 

 
 
推导列表

列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。

每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号。

>>> [x+1 for x in range(1,10,2)]
[2, 4, 6, 8, 10]

>>> [x*y for x in range(1,10,2) for y in range(3)]
[0, 1, 2, 0, 3, 6, 0, 5, 10, 0, 7, 14, 0, 9, 18]

列表推导式可以使用复杂表达式或嵌套函数:
>>> [str(round(355/113,i)) for i in range(1,6)]
[3.1, 3.14, 3.142, 3.1416, 3.14159]

集合也支持推导式:
>>> a = {x for x in abracadabra if x not in abc}
>>> a
{r, d}
字典推导可以用来创建任意键和值的表达式词典:
>>> {x: x**2 for x in (2, 4, 6)} {2: 4, 4: 16, 6: 36}

 

 

>>>defsquare(x) : # 计算平方数 ... returnx ** 2 ... >>> map(square, [1,2,3,4,5])# 计算列表各个元素的平方[1, 4, 9, 16, 25] >>> map(lambdax: x ** 2, [1, 2, 3, 4, 5])# 使用 lambda 匿名函数[1, 4, 9, 16, 25]# 提供了两个列表,对相同位置的列表数据进行相加 >>> map(lambdax, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])[3, 7, 11, 15, 19]

python基础--python六剑客

原文:https://www.cnblogs.com/wenm1128/p/11615693.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!