概述
序列操作函数
- 1.all()和 any()函数
- 2. range()函数
- 3. map() 函数
- 4. filter() 函数
- 5. reduce 函数
- 6. zip() 函数
- 7. reversed()函数和 sorted() 函数
函数名 | 功能说明 |
---|---|
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 ,返回 True
True
>>> all([0,1,2]) #列表中元素0的逻辑值为 False ,返回 False
False
>>> all(()) #空元组
True
>>> all({}) #空字典
True
>>> any([0,1,2]) #列表元素有一个为 True ,则返回 True
True
>>> any([0,0]) #列表元素全部为 False ,则返回 False
False
>>> any([]) #空列表
False
2. range()函数
range()函数用于创建一个整数列表,多用于 for 循环中
语法:
range(start,stop[,step])
其中, start 表示计数开始,默认值为0, stop 表示计数结束(不包含 stop ), step 表示步长,默认值为1。
例 6-25 range()函数的应用:
>>> r1 = range() #从开始到9
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
r1 = range() #从开始到9
TypeError: range expected 1 arguments, got 0
>>> r1 = range(10) #从开始到9
>>> print(list(r1))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> r2 = range(1,11) #从1开始到10
>>> print(list(r2))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> r3 = range(0,10,3) #步长为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) #range类型
<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() 函数的应用:
>>> # filter ()函数第一个参数是vowel()函数,筛选含有元音字符的单词
>>> 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
>>> #reduced()函数的第3个参数设置初值10000
>>> 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) #r2是反转的可迭代对象
>>> 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']
>>> #默认按字符的ASCII码排序
>>> 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']
最后
以上就是阳光夏天为你收集整理的Python——序列操作函数的全部内容,希望文章能够帮你解决Python——序列操作函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复