这次接着上一篇《Python函数学习解析》继续学习。
先看一下Python涵盖的函数(部分):
标出的函数都将是本篇博客将要介绍的。
range()函数
Python3 range()函数返回的是一个可迭代对象 (类型是对象) , 而不是列表类型,所以打印的时候不会打印列表。Python3 list()函数是对象迭代器,可以把range(返回的可选代对象转为-一个列表,返回的变量类型为列表。Python2 range()函数返回的是列表。
函数语法
range(stop)
range(start, stop[, step])
参数说明:
● start: 计数从start开始。默认是从0开始。例如range (5)等价于range(0, 5);
● stop:计数到stop结束,但不包括stop. 例如: range(0, 5)是[0, 1,2, 3, 4]没有5
● step:步长,默认为1.例如:range(0, 5)等价于range(0, 5, 1)
range()函数返回的是一个可迭代对象,而不是列表类型,所以打印的时候不会打印列表
>>>range(5)
range(0, 5)
>>> for i in range(5):
print(i)
————
0
1
2
3
4
>>> list(range(5))
[0,1,2,3,4]
>>> list(range(0))
[]
map()函数
map(函数,列表或其他可迭代对象)会根据提供的函数对指定序列做映射。
第一个参数function以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的新列表。
参数:
- function -----> 函数
- iterable -----> 一个或多个序列
返回值:
Python 3.x返回迭代器。
函数语法:
map(function, iterable, ...)
如果list(map(,[]))才可以得到列表,转化成想要的数据类型才可以输出,for循环里也可以通过编写输出具有阶段功能,传入参数不等时按最短的参数来。
>>>def square(x) :
>>> returnx ** 2
>>>map (square, [1,2,3,4,5])
<map at 0x5815240>
>>>def square (x): #计算平方数
>>> return x** 2
>>>list (map(square, [1,2,3, 4,5])) # 计算列表各个元素的平方
[1,4, 9, 16,25]
>>>map(lambdax: x**2,[1,2,3,4,5]) #使用lambda匿名函数
<map at 0x58077b8>
>>>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, listl, list2,list3)
>>>print (list (res))
[3, 6, 9]
filter()函数
filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回True或False ,最后将返回True的元素放到新列表中。
语法:
filter(function, iterable)
参数:
- function -----> 判断函数。
- iterable -----> 可迭代对象。
内置函数filter()将一一个 单参数函数作用到一个序列上,返回该序列中使得该函数返回值为True的那些元素组成的filter对象,如果指定函数为None ,则返回序列中等价于True的元素。
>>> seq = [ 'foo', 'x41', '?!', ‘***’ ]
>>> def func(x):
return x. isalnum() #测试是否为字母或数字
>>> filter(func, seq) #返回filter对象
<filter object at 0x000000000305D898>
>>> list(filter(func, seq)) #把filter对象转换为列 表
['foo', 'x41']
关于filter()方法, python3和python2有一点不同。
Python2.x中返回的是过滤后的列表,而Python3中返回到是一个filter 类。
filter类实现了_ iter__ 和_ next__ 方法, 可以看成是一个迭代器,有惰性运算的特性,相对Python2.x提升了性能,可以节约内存。
>>>a = filter(lambda x: x % 2 ==0, range(10))print(a)
输出:
<filter object at 0x000022EC66BB128>
zip()函数
zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
- zip()返回的是一个对象,如果需要展示列表,需手动list()转化。
- zip()函数可把两个或多个序列中的相应项合并在一起,并以元组的格式返回他们,在处理完最短序列中的所有项后就停止。
把可迭代对象一 一匹配,长度不一样按最短的为准,同上需要转化为想要输出的。 - 字典的键是不可变类型 dict(zip(a,b)), a必须是不可变的,可以生成{键值对}
语法:
zip([iterable, ...])
参数:
● iterabl -----> 个或多个迭代器
返回值: 返回元组列表。
>>>a = [1,2, 3]
>>>b = [4,5, 6]
>>>zip(a, b)
<zip at 0x5a1fa08>
>>>a = [1,2,3]
>>>b = [4,5, 6]
>>>list(zip(a, b))
[(1, 4), (2, 5), (3, 6)]
>>>a = [1,2,3]
>>>b = [4,5, 6]
>>>zipped = zip(a, b)
>>>list (zip (*zipped))
[(1, 2, 3), (4, 5, 6)]
enumerate()函数
用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。sequence:一个序列、迭代器、其他支持迭代对象。start:下表起始位置
>>>seasons = [' Spring', ' Summer", 'Fall', 'Winter' ]
>>>list (enumerate (seasons))
[(0, Spring ), (1, ' Summer' ), (2, Fall'), (3, ' Winter' )]
>>>list (enumerate (seasons, start=1)) #下标从1开始
[(1, ' Spring ), (2, ' Summer' ), (3, Fall' ), (4, ' Winter' )]
>>>i=0
>>>seq = [' Tom',,, 'Jerry', 'Bob' ]
>>>for element in seq:
>>> print (i, seq[i])
>>> i+=1
0 Tom
1 Jerry
2 Bob