专业编程基础技术教程

网站首页 > 基础教程 正文

简单学Python——内置函数18——map()函数

ccvgpt 2024-07-24 11:22:49 基础教程 13 ℃

map()函数是Python的内置函数。用法为map(被调用的函数, 一个或多个可迭代参数),它的返回结果是一个可迭代对象。具体的计算为:被调用的函数应用于可迭代参数的每一个元素,结果以列表的形式返回。如果有超过1个的可迭代参数,则并行的从这些参数中取元素。

举个例子,我们将一个列表的元素乘以2的话,用for循环是这样实现的:

简单学Python——内置函数18——map()函数

l=[1,2,3,4,5]
new_l=[]
for i in l:
    new_l.append(i*2)
print(new_l)

返回:[2, 4, 6, 8, 10]

用map()函数则是这样实现:

l=[1,2,3,4,5]
#自定义一个函数,返回2倍数值
def doublefunc(x):
        return x*2
new_l=map(doublefunc,l)
print(list(new_l))

返回:[2, 4, 6, 8, 10]

用for循环和map()函数都实现了功能,但map()函数看起来更清晰一些。下面用较大数据测试一下两者的运行速度:

list1=[k for k in range(100000000)]

import time
def timer(func):#可以改成自己喜欢的名字,不必“timer”
	def wrapper(*args, **kwargs):#可以改成自己喜欢的名字,不必“wrapper”
# 记录开始时间
		start_time = time.time()
# 给实际执行的函数传递参数
		result = func(*args, **kwargs)
# 记录结束时间
		end_time = time.time()
# 计算并输出程度运行耗费的时间
		execution_time = end_time - start_time
		print(f"{func}程序执行了: {execution_time} 秒")
#返回程序运行耗费的时间
		return result
# 将wrapper函数的运行结果返回
	return wrapper

#for循环方式
@timer
def func1():
    new_list=[]
    for i in list1:
        new_list.append(i*2)
    print(type(new_list))

#map函数方式
@timer
def func2():
    def doublefunc(x):
        return x*2
    list2=map(doublefunc,list1)
    print(type(list(list2)))

func1()
func2()

返回:<class 'list'> <function func1 at 0x00000151B4C83640>程序执行了: 5.8832128047943115 秒 <class 'list'> <function func2 at 0x00000151B4C824D0>程序执行了: 6.92294454574585 秒

for循环方式用了5.9秒,map()函数用了6.9秒。所以,在这个例子中,map()函数的运行效率不如直接用for循环。

Tags:

最近发表
标签列表