1、若要实现对一个列表中每个元素的更改,如对一个数字列表,得到一个新的列表是原来列表每个元素的平方
l = [1,3,5,7,9]
def pingfang(x):
return x**2
def map_test(func,array):
ret = []
for i in array:
ret.append(func(i))
return ret
print(map_test(pingfang,l))
>>> [1,9,25,49,81]
2、上例可以用lambda匿名函数取代执行元素的操作函数来处理
def map_test(func, array):
ret = []
for i in array:
ret.append(func(i))
return ret
print(map_test(lambda x:x**2, l))
>>> [1,9,25,49,81]
3、其实上述操作都可以用内置函数map来取代操作
map函数的用法:
map(func,iterable)
内部运行即为将传入的iterable对象用for循环提取出来,用传入的第一个参数func函数来处理
类似于上述2中我们自定义的map_test()函数,第一个参数是传入一个执行函数,第二个参数是个可迭代对象,最终返回值是
迭代器,所以需要用list()等方法将其转换为列表等可迭代对象(在python2中直接map()返回的为一个列表)
a.将列表的每个元素平方
print(list(map(lambda x:x**2,[1,3,5,7,9])))
>>> [1,9,25,49,81]
b. 将字符串中每个字符转换为大写
msg = 'abcdefg'
print(list(map(lambda x:x.upper(),msg)))
>>> ['A','B','C','D','E','F','G']