函数名 | 功能说明 |
---|
all() | 判断可迭代对象的每个元素是否都为 True 值 | any() | 判断可迭代对象的元家是否有为 True 值的元素 | range() | 产生一个序列,默认从0开始 | map() | 使用指定方法去操作传入的每个可选代对象的元素,生成新的可迭代对象 | filter() | 使用指定方法过滤可迭代对象的元素 | reduce() | 使用指定方法累积可迭代对象的元素 | zip() | 聚合传入的每个迭代器中相同位置的元素,返回一个新的元组类型选代器 | sorted() | 对可选代对象进行排序,返回一个新的列表 | reversed() | 反转序列生成新的可选代对象 |
1.all()和 any()函数
all()函数一般针对组合数据类型。如果函数中每个元素都是 True ,则返回 True;否则返回 False 。
需要注意的是,整数0、空字符串、空列表等都被当作 False 。
any()函数与 all()函数相反,只要组合数据类型中任何一个元素是 True ,则返回 True ,全部元素都是 False 时,返回 False 。
例 6-24 all()和 any()函数的应用:
>>> all([1,2])
True
>>> all([0,1,2])
False
>>> all(())
True
>>> all({})
True
>>> any([0,1,2])
True
>>> any([0,0])
False
>>> any([])
False
2. range()函数
range()函数用于创建一个整数列表,多用于 for 循环中 语法:
range(start,stop[,step])
其中, start 表示计数开始,默认值为0, stop 表示计数结束(不包含 stop ), step 表示步长,默认值为1。
例 6-25 range()函数的应用:
>>> r1 = range()
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
r1 = range()
TypeError: range expected 1 arguments, got 0
>>> r1 = range(10)
>>> print(list(r1))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> r2 = range(1,11)
>>> print(list(r2))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> r3 = range(0,10,3)
>>> print(list(r3))
[0, 3, 6, 9]
>>> r4 = range(0,-10,-1)
>>> print(list(r4))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> type(r4)
<class 'range'>
3. map() 函数
map()函数用于将指定序列中的所有元素作为参数,通过指定函数,将结果构成一个新的序列返回。 语法:
map(function,iter1[,iter2,···])
map()函数的参数可以有多个序列,序列个数由映射函数 function 的参数个数决定。
简单地说就是根据指定映射函数对多个参数序列进行运算,从而形成新的序列。
例 6-26 map() 函数的应用:
>>> m1 = map(lambda x,y:x*y,[3,4,5],[4,5,6])
>>> type(m1)
<class 'map'>
>>> print(m1)
<map object at 0x0000029D331F9FD0>
>>> print(list(m1))
[12, 20, 30]
例 6-27 map() 函数的应用:
>>> def fact(n):
t = 1
for i in range(1,n+1):
t=t*i
return t
>>> m2 = map(fact,(3,4,5,6))
>>> print(list(m2))
[6, 24, 120, 720]
4. filter() 函数
filter()函数会对指定序列执行过滤操作。 语法:
filter(function,iter)
其中:
- 第一个参数 function 是用于过滤的函数名称,该函数只能接收一个参数,且该函数的返回值为布尔值;
- 第二个参数是列表、元组或字符串等序列类型。
filter ()函数的作用是将序列参数中的每个元素分别调用 function 函数,并返回执行结果为 True 的元素。
例 6-28 filter() 函数的应用:
>>>
>>> def vowel(word):
if word.find('a')>=0 or word.find('e')>=0 or word.find('i')>=0\
or word.find('o')>=0 or word.find('u')>=0:
return word
>>> f2 = filter(vowel,["python","php","java","c++","html"])
>>> print(list(f2))
['python', 'java']
5. reduce 函数
reduce()函数用于将指定序列中的所有元素作为参数,并按一定的规则调用指定函数。 语法:
reduce(function,iter)
其中, function 是映射函数,必须有两个参数。 reduce()函数首先以序列 iter 的第1个和第2个元素为参数调用映射函数,然后将返回结果与序列的第3个元素为参数调用映射函数,依此类推,直至应用到序列的最后一个元素,才将计算结果作为 reduce ()函数的返回结果。
需要说明的是,自 Python 3以后, reduce ()函数就不再是 Python 的内置函数了,用户需要从 functools 模块中导人后才能调用 reduce ()函数。
例 6-29 reduce() 函数的应用:
>>> from functools import reduce
>>> r1 = reduce(lambda x,y:x+y,(1,2,3,4,5))
>>> print(r1)
15
>>>
>>> r2 = reduce(lambda x,y:x+y,(1,2,3,4,5),10000)
>>> print(r2)
10015
>>>
>>> r3 = reduce(lambda x,y:x*10+y,[1,2,3,4,5])
>>> print(r3)
12345
6. zip() 函数
zip()函数以一个或多个序列作为参数,将序列中的元素打包成多个元组,并返回由这些元组组成的列表。 语法:
zip(iter1[,iter2,···])
例 6-30 zip() 函数的应用:
>>>
>>> z1 = zip([1,3,5])
>>> print(list(z1))
[(1,), (3,), (5,)]
>>>
>>> z2 = zip([1,3,5],[2,4,6])
>>> print(list(z2))
[(1, 2), (3, 4), (5, 6)]
>>>
>>> z3 = zip((1,3,5),(2,4,6),('a','b','c'))
>>> print(list(z3))
[(1, 2, 'a'), (3, 4, 'b'), (5, 6, 'c')]
>>>
>>> z4 =zip([1,3,5,7],[2,4,6],['a','b','c'])
>>> print(list(z4))
[(1, 2, 'a'), (3, 4, 'b'), (5, 6, 'c')]
>>> type(z1)
<class 'zip'>
7. reversed()函数和 sorted() 函数
reversed ()函数用于反转序列,生成新的可迭代对象; sorted ()函数对可迭代对象进行排序,返回一个新的列表。
例 6-31 reversed() 函数的应用:
>>> r1 = range(10)
>>> r2 = reversed(r1)
>>> type(r2)
<class 'range_iterator'>
>>> list(r2)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
sorted()函数接受3个参数,返回一个排序之后的 list 。 语法:
sorted(iterable, key=None, reverse=False)
- iterable – 可迭代对象。
- key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
例 6-32 sorted() 函数的应用:
>>> str1 = ['a','b','d','c','B','A']
>>>
>>> sorted(str1)
['A', 'B', 'a', 'b', 'c', 'd']
>>>
>>> sorted(str1,key=str.lower)
['a', 'A', 'b', 'B', 'c', 'd']
>>> sorted(str1,reverse=True,key=str.lower)
['d', 'c', 'b', 'B', 'a', 'A']
|