经常容易忘记的一些函数用法,特此记录一下。
1.map
map():会根据提供的函数对指定的序列做映射,操作对象是指定序列里的每一个元素
格式:
map(function,iterable)
function:函数,可为匿名,返回值是一个新的列表
iterable:可迭代对象
python2:返回列表
python3:返回的是迭代器
例子:
a = (1,2,3,4,5)
la = map(str,a)
print(la)
print(list(la))
输出结果:
<map object at 0x000001CD7A1927F0>
['1', '2', '3', '4', '5']
2.reduce
reduce()函数会对参数中的元素进行累积;
reduce(function,iterable[,initializer])
function:函数,有两个参数
iterable:可迭代的对象
initializer:可选,初始化参数
返回值:返回函数计算的结果
from functools import reduce
add_num = lambda a, b: a + b
result = reduce(add_num, (1, 2, 5, 8, 9))
print(result)
print(reduce(lambda a, b: a + b, (1, 2, 5, 8, 9)))
输出结果:
25
25
注意:
一个函数作用在一个序列上,该函数必须要接受两个参数,
reduce把结果和序列中的下一个元素进行计算,
返回值:计算后的结果
3.filter
filter()函数:用于过滤序列,过滤掉不符合条件的元素,返回由符合条件的元素组成的新的列表
* filter(function,iterable)
* function:函数
* 判断函数
* iterable:序列,
* 序列的每一个元素作为参数传递到函数进行判断,返回True,False,最后将True的元素存放到一个新的列表中
* 返回值:列表
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def get_num(num):
if num % 2 == 0:
return True
else:
return False
result = filter(get_num, list1)
print(list(result))
输出结果:
[2, 4, 6, 8]
4.sorted
sorted()函数对所有的可迭代的对象进行排序的操作
sorted(iterable[,cmp[,key[,reverse]]])
iterable:可迭代的对象
cmp:比较的函数,这个函数中具有两个参数,参数的值都是从可迭代的对象中取出,
大于返回1
小于返回-1
等于返回0
key:比较的规则,参照
reverse:排序规则 reverse= False(升序,默认) reverse= true(降序)
list01 = [1, 4, 7, 3, 2]
list02 = sorted(list01)
print(list02)
输出结果:
[1, 2, 3, 4, 7]
def myLen(str):
return len(str)
list8 = ["3333333","aaa","b222","c2277","d34567"]
list9 = sorted(list8,key=myLen)
print(list9)
输出结果:
['aaa', 'b222', 'c2277', 'd34567', '3333333']
5.permutations,combinations
permutations
从n不同的元素中取m个元素,会按照特定的顺序排成一列(即数学中的排列组合做法,一共有**n!/(n-m)!**种不同的排列
格式:
iterTools.permutations(序列,排列个数)
import itertools
mylst = list(itertools.permutations([1,2,3,4],2))#12
print(mylst)
mylst = list(itertools.permutations([1,2,3,4],3))#24
print(mylst)
输出结果:
12个排列
24个排列
combinations
itertolls模块
combinations(序列,组合的数量)
import itertools
mylist = list(itertools.combinations([1,2,3,4,5],3))
print(mylist)
"""
m n
5 5 1
5 4 5
5 3 10
5 2 10
n!/(m!*(n-m)!)种不重复的结果