Python函数进阶range,map,filter,reduce,zip,enumerate

函数定义语法

 def 函数名([参数名]): 
    ```注释```
    函数体

lambda匿名函数

<函数名>=lambda<参数>:<表达式>

>>> sorted(['abc','afe','acb'],key=lambda x:(x[0],x[2]))
['acb', 'abc', 'afe']

可以定义有名字的的函数。
lambda 是为了减少单行函数的定义而存在的

range函数

描述

range()可创建一个整数列表,一般在for循环中。

语法

range(stop)
range(start,stop[,step])

参数说明

  • start:计数从start开始。默认从0开始。
>>> range(5)
range(0, 5)
  • stop:计数到stop结束,但不包括stop(要头不要尾)。
>>> list(range(0,5))
[0, 1, 2, 3, 4]
  • step:步长,默认是1。例如range(0,5)等价于range(0,5,1)。

map函数

描述

  • map()会根据提供的函数对指定序列做映射。
  • 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

语法

map(function,iterable,…)

参数说明

  • function–函数
  • iterable–一个或多个序列
def square(x):
    return x ** 2
map(square,[1,2,3,4,5])

<map at 0x12cfab452b0>#输出迭代器
def square(x):#计算平方数
    return x ** 2
list(map(square,[1,2,3,4,5]))#计算列表各元素的平方,加list就可以计算。

[1, 4, 9, 16, 25]
map(lambda x:x**2,[1,2,3,4,5])#使用lambda匿名函数,生产迭代器,加list就可以计算

filter函数(过滤器)

描述

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

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

语法
filter(function,iterable)

参数
function–判断函数。
iterable–可迭代对象。

只能接收一个参数,且返回值是Ture或Fasle

过滤掉所有奇数

def is_odd(n):
    return n % 2 == 1
newlist = filter(is_odd,[1,2,3,4,5,6,7,8,9,10])
print(newlist)
#输出迭代器
<filter object at 0x0000012CFAB45DD8>
def is_odd(n):
    return n % 2 == 1
 newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(newlist)
#加list输出结果
[1, 3, 5, 7, 9]
>> list(filter(None,[0,1,2,3,0,0]))
[1, 2, 3]#输出非零数

zip函数

描述
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

语法

zip([iterable,…])

参数

iterable–一个或多个迭代器。

返回值

返回元组列表

a=[1,2,3]
b=[4,5,6]
zip(a,b)

<zip at 0x12cfab59788>#输出迭代器
a=[1,2,3]
b=[4,5,6]
list(zip(a,b))

[(1, 4), (2, 5), (3, 6)]#加list,输出元组列表
a=[1,2,3]
b=[4,5,6]
zipped=zip(a,b)#打包为元组列表
list(zip(*zipped))# * 还原,将元组解压为列表,返回二维矩阵
[(1, 2, 3), (4, 5, 6)]

reduce函数(迭代式计算)

描述
reduce() 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

在python2里是内置函数,但是在python3里被放置出去,放置在functools里

语法

reduce(function, iterable[, initializer])

参数
function – 函数,必须有两个参数
iterable – 可迭代对象
initializer – 可选,初始参数

返回值
函数计算结果

def add(x,y):#两数相加
        return x + y
   reduce(add,[1,2,3,4,5})#计算列表和:1+2+3+4+5
15
   reduce(lambda x,y:x+y,[1,2,3,4,5])#使用lambda匿名函数
15

enumerate函数(返回索引和值)

描述
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

语法

enumerate(sequence, [start=0])

参数
sequence – 一个序列、迭代器或其他支持迭代对象。
start – 下标起始位置。

返回值
返回 enumerate(枚举) 对象。

for循环使用enumerate

>>>seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
...     print i, element
... 
0 one
1 two
2 three

参考:http://www.runoob.com/python/python-func-enumerate.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值