目录
1.filter()函数
2.map()函数
3.zip()函数
4,enumerate()函数
1.filter()函数
filter函数用于过滤序列。filter()函数包含2个参数,一个是过滤函数,另一个是过滤序列。形如:filter(f,L)
filter函数会将过滤函数依次作用于每一个过滤序列的元素,返回符合要求的过滤值。
help(filter)
Help on class filter in module builtins:
class filter(object)
| filter(function or None, iterable) --> filter object
| Return an iterator yielding those items of iterable for which function(item)
| is true. If function is None, return the items that are true.
使用help语句得到filter的部分信息如上,第一个参数可以为一个函数或者None,第二个参数为一个可迭代的对象。
1. 当第一个参数为None时,则返回iterable中为True的元素(Ture或者非0):
list(filter(None,[1,2,0,True,False]))
Out[18]: [1, 2, True]
2. 当第一个参数为function时,则将iterable中的元素作为参数代入function中,返回其中能使function的返回结果为True的元素。
list(filter(lambda x:x%5,range(20)))
Out[21]: [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19]
2.map()函数
map()的原型是map(function, iterable, …),它的返回结果是一个列表。
参数 function: 传的是一个函数名,可以是python内置的,也可以是自定义的。 就像上面的匿名函数lambda参数
iterable: 传的是一个可以迭代的对象,例如列表,元组,字符串这样的。
这个函数的意思就是将function应用于iterable的每一个元素,结果以列表的形式返回。注意到没有,iterable后面还有省略号,意思就是可以传很多个iterable,如果有额外的iterable参数,并行的从这些参数中取元素,并调用function。如果一个iterable参数比另外的iterable参数要短,将以None扩展该参数元素。还是看例子来理解吧!
a=(1,2,3,4,5)
b=[1,2,3,4,5]
c="lh"
la=map(str,a)
lb=map(str,b)
lc=map(str,c)
print(la)
print(lb)
print(lc)
输出:
['1', '2', '3', '4', '5']
['1', '2', '3', '4', '5']
['l', 'h']
如果传入多个可迭代对象,下面例子解释说明
def add(x,y,z):
return x,y,z
list1 = [1,2,3]
list2 = [1,2,3,4]
list3 = [1,2,3,4,5]
res = map(add, list1, list2, list3)
print(res)
输出:
[(1, 1, 1), (2, 2, 2), (3, 3, 3), (None, 4, 4), (None, None, 5)]
3.zip()函数
zip函数的原型为:zip([iterable, …])
参数iterable为可迭代的对象,并且可以有多个参数。该函数返回一个以元组为元素的列表,其中第 i 个元组包含每个参数序列的第 i 个元素。返回的列表长度被截断为最短的参数序列的长度。只有一个序列参数时,它返回一个1元组的列表。没有参数时,它返回一个空的列表。
import numpy as np a=[1,2,3,4,5] b=(1,2,3,4,5) c=np.arange(5) d="zhang" zz=zip(a,b,c,d) print(zz)#print(list(zz))#[(1, 1, 0, 'z'), (2, 2, 1, 'h'), (3, 3, 2, 'a'), (4, 4, 3, 'n'), (5, 5, 4, 'g')] 当没有参数时候
zz=zip() print(zz)#print(list(zz))#[]
当只有一个参数的时候
a=[1,2,3] zz=zip(a) print(list(zz))#[(1,), (2,), (3,)]
当多个参数长度不同额时候
import numpy as np
a=[1,2,3]
b=[1,2,3,4]
c=[1,2,3,4,5]
zz=zip(a,b,c)
print(list(zz))#[(1, 1, 1), (2, 2, 2), (3, 3, 3)]
zip() 和 * 操作符一起操作可以用来 unzip 一个列表
a=[1,2,3] b=[4,5,6] c=[7,8,9] zz=zip(a,b,c) # print(list(zz)) x,y,z=zip(*zz) print(x) print(y) print(z)
'''
(1, 2, 3)
(4, 5, 6)
(7, 8, 9)
'''
4,enumerate()函数
在同时需要index和value值的时候可以使用 enumerate。下列分别将字符串,数组,列表与字典遍历序列中的元素以及它们的下标:
列表
lis=[1,2,3,4]
for i,j in enumerate(lis):
print(i,j)
0 1
1 2
2 3
3 4
元组
tup=(1,2,3,4)
for i,j in enumerate(tup):
print(i,j)
0 1
1 2
2 3
3 4
字典
dic={1,2,3,4}
for i,j in enumerate(dic):
print(i,j)
0 1
1 2
2 3
3 4
集合
set={1,2,3,4}
for i,j in enumerate(set):
print(i,j)
0 1
1 2
2 3
3 4
字符串
str="asbdf"
for i,j in enumerate(str):
print(i,j)
0 a
1 s
2 b
3 d
4 f



