python:内建函数、range()、map()、filter()、reduce()、sorted()、集合的使用、functools中的函数使用、MD5加密

时间:2022-05-27 18:32:45

内建函数
range() map()...


map(function,sequence[,sequence,...])-->list
返回值是list
参数序列中的每一个元素分别调用function函数,返回包含每次function函数返回值的list

#函数需要一个参数
map(lambda x:x*x,[1,2,3])

#函数需要两个参数
map(lambda x,y:x+y,[1,2,3],[4,5,6])

#前面的函数,普通函数和lambda都可以
def f1(x,y):
return x*y
l1=[1,2,3,4]
l2=[2,3,32,3]
l3=map(f1,l1,l2)
print(list(l3))

filter()函数

filter函数  对指定序列执行过滤操作
filter(function,sequence)
function:接受一个参数,返回布尔值True或False
sequence:序列可以是str,tuple,list
filter函数会对序列参数sequence中的每个元素调用function函数,最后返回的结果包含调用结果为True的元素
返回值的类型和参数sequence的类型相同

re=filter(lambda x:x%2,[1,2,3,4,5])
print(list(re))#[1, 3, 5]

reduce函数
对参数序列中的元素进行累积

from functools import reduce
reduce(lambda x,y:x+y,[1,2,3,4])#10
'''过程 x :y
1,2
3,3
6,4

'''
reduce(lambda x,y:x+y,['aa','bb','vv'],'dd')
'''过程 x,y
dd,aa
ddaa ,bb
ddaabb, vv

'''

sorted()排序方法

a=[3,2,54,36,8,7,9,67,12]
a.sort()
a.sort(reverse=True)
print(sorted(a))#现在的排序方法 [2, 3, 7, 8, 9, 12, 36, 54, 67]

集合的使用 ,可以使用交、并、差、对称差集

#集合的使用:
#集合可以取交集
s1={'a','b','v','h','l',0}
s2={'a','b','v','h'}
print(s1&s2)#{'v', 'a', 'h', 'b'}
print(s1|s2)#{0, 'h', 'l', 'a', 'b', 'v'}
print(s1-s2)#{0, 'l'}
print(s1^s2)#{0, 'l'} 对称差集在s1 或s2中,但不会同时出现在二者中
print(len(s1))#6

functools中函数的使用

import functools
print(dir(functools)) #里面的常用的函数
'''
['MappingProxyType', 'RLock', 'WRAPPER_ASSIGNMENTS', 'WRAPPER_UPDATES', 'WeakKeyDictionary',
'_CacheInfo', '_HashedSeq', '__all__', '__builtins__', '__cached__', '__doc__',
'__file__', '__loader__', '__name__', '__package__', '__spec__', '_c3_merge',
'_c3_mro', '_compose_mro', '_convert', '_find_impl', '_ge_from_gt', '_ge_from_le',
'_ge_from_lt', '_gt_from_ge', '_gt_from_le', '_gt_from_lt', '_le_from_ge',
'_le_from_gt', '_le_from_lt', '_lru_cache_wrapper', '_lt_from_ge', '_lt_from_gt',
'_lt_from_le', '_make_key', 'cmp_to_key', 'get_cache_token', 'lru_cache', 'namedtuple', 'partial',
'partialmethod', 'reduce', 'singledispatch', 'total_ordering', 'update_wrapper', 'wraps']
'''

functools中的函数:

partial()函数:将函数的某些默认参数设置,返回一个新函数

#简单介绍下里面的函数
#partial:把一个函数的某些参数设置默认值,返回一个新的函数,调用这个新函数会更简单
def showarg(*args,**kw):
print(args)
print(kw)

p1=functools.partial(showarg,1,2,3)
p1()
'''
(1, 2, 3)
{}
'''
p1(4,5,6)
'''
(1, 2, 3, 4, 5, 6)
{}
'''
p1(a='python',b='itcast')
'''
(1, 2, 3)
{'a': 'python', 'b': 'itcast'}
'''

wraps函数,使用装饰器后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变)

使用前:

def function(func):
"这里做个测试,没有用wraps函数"
def wrapper():
"要被装饰的函数"
print("note something")
return func()
return wrapper

@function
def test():
"这里是test()函数调用说明"
print('---test---')

test()
print(test.__doc__)#这里显示调用函数的说明,但是没有显示调用的test的函数说明
'''
note something
---test---
要被装饰的函数
'''

使用后:

def functionW(func):
"这里做个测试,没有用wraps函数"
@functools.wraps(func)
def wrapper():
"要被装饰的函数"
print("note something")
return func()
return wrapper

@functionW
def testW():
"这里是test()函数调用说明"
print('---test---')

testW()
print(testW.__doc__)
'''
note something
---test---
这里是test()函数调用说明
'''


MD5加密(message-digest algorithm 5(sha256))

import hashlib
m=hashlib.md5()
print(m)
m.update(b"hello")
print(m.hexdigest())#得到一个128位,128/8=16个字节,1个字节通过2个十六进制表示,所以为32位十六进制表示
'''
<md5 HASH object @ 0x0000000000B61648>
5d41402abc4b2a76b9719d911017c592
'''

python:内建函数、range()、map()、filter()、reduce()、sorted()、集合的使用、functools中的函数使用、MD5加密

python:内建函数、range()、map()、filter()、reduce()、sorted()、集合的使用、functools中的函数使用、MD5加密