python中常用函数整理

时间:2021-04-30 06:17:30

  1、map

    map是python内置的高阶函数,它接收一个函数和一个列表,函数依次作用在列表的每个元素上,返回一个可迭代map对象。

class map(object):
"""
map(func, *iterables) --> map object

Make an iterator that computes the function
using arguments from
each of the iterables. Stops when the shortest iterable
is exhausted.
"""
def __getattribute__(self, *args, **kwargs): # real signature unknown
""" Return getattr(self, name). """
pass

def __init__(self, func,
*iterables): # real signature unknown; restored from __doc__
pass

def __iter__(self,
*args, **kwargs): # real signature unknown
""" Implement iter(self). """
pass

@staticmethod # known
case of __new__
def __new__(
*args, **kwargs): # real signature unknown
""" Create and return a new object. See help(type) for accurate signature. """
pass

def __next__(self,
*args, **kwargs): # real signature unknown
""" Implement next(self). """
pass

def __reduce__(self,
*args, **kwargs): # real signature unknown
""" Return state information for pickling. """
pass

  用法举例 :  将列表li中的数值都加1,  li = [1,2,3,4,5]

li = [1,2,3,4,5]

def add1(x):
return x+1

res
= map(add1, li)
print(res)
for i in res:
print(i)

结果:
<map object at 0x00000042B4E6D4E0>
2
3
4
5
6

 

  2、lambda表达式

    是一个表达式,可以创建匿名函数,冒号前是参数,冒号后只能有一个表达式(传入参数,根据参数表达出一个值)

    

nl = lambda x,y:x*y  # 给出x,y参数,计算出x和y的相乘
print(nl(
3,5))
pring(
-----)
#和map的结合
li
= [1,2,3,4,5]
for i in map(lambda x:x*2, li):
print(i)

结果:
15
-----
2
4
6
8
10

  3、Pool

    1、多进程,是multiprocessing的核心,它与threading很相似,但对多核CPU的利用率会比threading好的多

    2、可以允许放在Python程序内部编写的函数中,该Process对象与Thread对象的用法相同,拥有is_alive()、join([timeout])、run()、start()、terminate()等方法

    3、multiprocessing包中也有Lock/Event/Semaphore/Condition类,用来同步进程

  传统的执行多个函数的例子

import time

def do_proc(n): # 返回平方值
time.sleep(
1)
return n*n

if __name__ == '__main__':
start
= time.time()
for p in range(8):
print(do_proc(p)) # 循环执行8个函数
print(
"execute time is " ,time.time()-start)

结果:
0
1
4
9
16
25
36
49
execute time
is 8.002938985824585

  使用多进程执行函数

import time
from multiprocessing import Pool

def do_proc(n): # 返回平方值
time.sleep(
n)
print(n)
return n*n

if __name__ == '__main__':
pool
= Pool(3) # 池中最多只能放三个任务
start
= time.time()
p1
= pool.map(do_proc, range(8)) # 跟python的map用法相似(map连续生成8个任务的同时依次传给pool,pool依次调起池中的任务,执行完的任务从池中剔除)
pool.close() # 关闭进程池
pool.join() # 等待所有进程(8个进程)的结束
print(p1)
print(
"execute time is ", time.time() - start)

结果:
0
1
2
3
4
5
6
7
[
0, 1, 4, 9, 16, 25, 36, 49]
execute time
is 3.3244528770446777

   查看任务管理器:

python中常用函数整理

   4、random

import random

print(random.random()) # 生成一个0
-1随机小数
print(random.uniform(
10,20)) # 指定范围随机选择一个小数
print(random.randint(
10,20)) # 指定范围内随机选择一个整数
print(random.randrange(
0,90,2)) # 指定范围内选择一个随机偶数
print(random.choice(
'abcdefg')) # 指定字符串中随机选择一个字符
print(random.sample(
'abcdefgh'),2) # 指定字符串内随机选择2个字符
print(random.choice([
'app','pear','ora'])) # 指定列表内随机选择一个值
itmes
= [1,2,3,4,5,6,7,8] # 将列表表洗牌
random.shuffle(itmes)
print(itmes)