Python常用函数总结(iter、filter、map、zip、reduce、yield生成器 )

'''iter函数

iter(object)

object必须是集合对象,且支持迭代协议(iteration protocol)或者支持序列协议(sequence protocol)。

说白了,也就是实现了__iter__()方法或者__getitem__()方法。

如果传递了第二个参数,则object必须是一个可调用的对象(如,函数)。此时,iter创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用object。

如果__next__的返回值等于sentinel,则抛出StopIteration异常,否则返回下一个值。

'''

list1 = [1,2,3,4]
it = iter(list1)
print(next(it))
print(next(it))
print(next(it))
print(next(it))
#print(next(it))


# # print(next(it))   超出数组长度抛出StopIteration异常

运行结果:

1
2
3
4

==============================================================================

'''yield 任何使用yield的函数都称之为生成器
(generator 生成器'''

def frange(start,stop,step):
    x = start
    while x < stop:
        yield x
        x += step

for i in frange(1,4,1):
    print(i)

运行结果:

1
2
3
4
5
6
7
8
9

============================================================================
'''filter函数

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

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

'''

list3 = list(filter(lambda x:x ,range(1,10)))
print(list3)

运行结果:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

========================================================================
'''map函数

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

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

'''

list4 = list(map(lambda x:x ,range(1,10)))
print(list4)

运行结果:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

#例子:filter与map函数过滤list中的元素及filter与map函数的区别

list3 = list(filter(lambda x: x%2>0, range(1, 10)))
print(list3)

list4 = list(map(lambda x: x%2>0, range(1, 10)))
print(list4)

运行结果:

[1, 3, 5, 7, 9]
[True, False, True, False, True, False, True, False, True]

===========================================================================

'''zip函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

我们可以使用 list() 转换来输出列表。

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

'''
#例子:将两个字典拼成一个字典

print(tuple(zip((1,2),(3,4))))

运行结果:

((1, 3), (2, 4))

#例子:调转字典的key和value

dict1={'a':'aa','b':'bb'}
print(dict(zip(dict1.values(),dict1.keys())))

运行结果: 

{'bb': 'b', 'aa': 'a'}

a = [1,2,3]
b = [4,5,6]
a1, a2 = zip(*zip(a,b))          # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
print(list(a1))
print(list(a2))

运行结果: 

[1, 2, 3]
[4, 5, 6]

=============================================================================
'''reduce函数

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

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

'''

#例子:计算1+2+3+4+....+100
 

from  functools import reduce
print(reduce(lambda x,y:x+y,range(1,101),0))

运行结果:  5050

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值