【小白从小学Python、C、Java】
【Python-计算机等级考试二级】
[快速理解]
1.lambda定义函数F1(x)=x+1:
F1=lambda x:x+1
2.F1(x)的使用:
F1(1)的结果是:2
3.map()使用F1(x)计算多个x+1:
list(map(F1,[0,1,2]))的结果是:[1,2,3]
[选择题]
对于列表myList = [1,2,3],下列语句可以生成[2, 3, 4]的是?
A list(map(lambda x:x+1, myList))
B list(map(lambda x:x**2, myList))
C list(map(lambda x:x*2, myList))
D list(map(lambda x, y:3*x-y, myList, [2,2,0]))
欢迎大家转发,一起传播知识和正能量,帮助到更多人。期待大家提出宝贵改进建议,互相交流,收获更大。辛苦大家转发时注明出处(也是咱们公益编程交流群的入口网址),刘经纬老师共享知识相关文件下载地址为:http://liujingwei.cn
[问题解析]
1.这道题考查了用map()函数与lambda表达式生成新的列表。
1.1什么是lambda表达式?
lambda表达式用一句表达式对任意数量的变量进行数学运算,是一个匿名函数。
语法是:lambda arguments : expression。其中arguments就是任意数量的变量,expression就是对变量进行的数学运算。
lambda定义函数F1(x)=x+1:
F1=lambda x:x+1
F1(x)的使用:
F1(1)的结果是:2
1.2什么是map()函数?
map()函数分别将列表中的每个元素调用给定的函数,生成由每个新元素组成的新列表。语法是:map(function, iterable, ...)。其中function就是给定的函数;iterable是一个序列,这里我们讨论的是列表;省略号表明可以写入多个序列。
map()使用F1(x)计算多个x+1:
list(map(F1,[0,1,2]))的结果是:[1,2,3]
1.3为什么要结合使用map()函数和lambda表达式生成新列表?
用lambda表达式定义的函数作为map()函数中给定的函数,可以很好地体现lambda表达式简洁的特点,当需要使用一个函数,而又不想专门命名一个函数的时候可以考虑使用lambda表达式。而map()函数使用的时候需要一个函数为列表中的元素提供映射规则,这时不需要一个命名函数,只需要定义出函数的功能,所以将lambda表达式嵌入map()函数可以最快最方便地实现生成新列表的想法。
2.题目解析:
A选项,语句实现了每个列表元素的值加一,结果是列表[2,3,4];
B选项,语句实现了每个列表元素的值进行平方,结果是列表[1,4,9];
C选项,语句实现了每个列表元素的值乘以2,结果是列表[2,4,6];
需要注意的是,*2对于列表来说,是按照顺序复制每一个元素并尾插入到原列表中,生成新的列表,比如:[1,2,3]*2的结果是[1,2,3,1,2,3]。但是在本题中,是对列表每个元素进行函数调用,所以结果是每个元素的值乘2倍,即[2,4,6]。(相关代码运行结果见图)
D选项,语句实现了每个列表元素的值先乘以3,再减去列表[2,2,0]中对应位置元素的值,结果是列表[1,4,9];
经过对比,发现A选项返回的列表与其他选项的不同。
[答案与运行结果]
正确答案是:A
图片:
[温馨期待]
期待大家提出宝贵建议,互相交流,收获更大