1.简介

python 提供内置函数map(), 接收两个参数,一个是函数,一个是序列,
map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返
回。
例如:

(1)对于list [1, 2, 3, 4, 5, 6, 7, 8, 9]
如果希望把list的每个元素都作平方,就可以用map()函数:
因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算:

def f(x):
return x * x
print(list(map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])))

输出结果:
[1, 4, 9, 10, 25, 36, 49, 64, 81]

也可以结合lambda这样写:

print map(lambda x: x**2, list)

注意:map()函数不改变原有的 list,而是返回一个新的 list。

(2)list中字符串转换成int

list2 = ['1', '2', '3', '4', '5']
print(list(map(lambda x:int (x), list2)))

输出结果:

[1, 2, 3, 4, 5]

利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。
由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。

2.注意(Python3中map函数的问题):

在Python2中map函数会返回一个list列表,如代码:

>>> def f(x, y): return (x, y)  

>>> l1 = [ 0, 1, 2, 3, 4, 5, 6 ]  

>>> l2 = [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ]

返回结果如下:

>>> map(f, l1, l2)  

[(0, 'Sun'), (1, 'Mon'), (2, 'Tue'), (3, 'Wed'), (4, 'Thu'), (5, 'Fri'), (6, 'Sat')]

但是,在Python3中返回结果如下:

>>> map(f1, l1, l2)  

<map object at 0x00000000021DA860>

如果想要得到Python2的那种结果,即返回list列表,那么必须用list作用于map,如下:

>>> list(map(f1, l1, l2))  

[(0, 'Sun'), (1, 'Mon'), (2, 'Tue'), (3, 'Wed'), (4, 'Thu'), (5, 'Fri'), (6, 'Sat')]

3.例子(Python3实现):

假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list:
方法1:

def format_name(str):
str1 = str[0:1].upper() + str[1:].lower()
return str1 name_list = ['BOB', 'tom', 'IVy']
print(list(map(format_name, name_list)))

方法2:

def format_name1(str):
str1 = str.capitalize()
return str1 name_list = ['BOB', 'tom', 'IVy']
print(list(map(format_name1, name_list)))

方法3:

def format_name1(str):
str1 = str.title()
return str1 name_list = ['BOB', 'tom', 'IVy']
print(list(map(format_name1, name_list)))

输出结果:

['Bob', 'Tom', 'Ivy']

最新文章

  1. git &amp; scp
  2. web 前端常用组件【02】Select 下拉框
  3. jni的使用方法
  4. php中文转换编码函数
  5. 用NULL布局为什么不能显示
  6. linux 真&#183;随笔
  7. Windows xp IIS显示403错误解决方案
  8. Spring框架学习之第6节
  9. DB天气app冲刺二阶段第一天
  10. nginx Location配置总结(转)
  11. ANDROID_MARS学习笔记_S01原始版_008_Handler(异步消息处理机制)
  12. hdu 2711&amp;&amp;poj2182 Lost Cows (线段树)
  13. Java public, private, protected and default
  14. JavaScipt面向对象编程----闭包
  15. java基础之基础语法详录(一)
  16. Ch1. Intro to Programming
  17. Android Studio 快速开发
  18. 随机数据生成与对拍【c++版,良心讲解】
  19. Java对象回收流程
  20. gdb调试嵌入式环境搭建

热门文章

  1. NetCore 生成RSA公私钥对,公钥加密私钥解密,私钥加密公钥解密
  2. 修改Elasticsearch的settings
  3. es6 let和const
  4. Elasticsearch - Scroll
  5. sql 跨服务器查询
  6. Redis Pubsub命令用法
  7. CF552 E. Two Teams
  8. Python交互图表可视化Bokeh:6. 轴线| 浮动| 多图表
  9. pip软件包安装 + Anaconda软件库安装 教程
  10. execution(* com.sample.service.impl..*.*(..))