本文是针对map(),reduce()和filter()三个高阶函数的程序练习。
map()概念
##### 题目
> 利用 map() 函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。
> 例如输入: [‘adam’, ‘LISA’, ‘barT’] ,输出: [‘Adam’, ‘Lisa’, ‘Bart’]
1
2
3
4
5
6
|
def test(name_list):
print(map(
lambda name: name[
0].upper()+name[
1:].lower(), name_list))
'adam',
'LISA',
'barT'])
test([
[
'Adam',
'Lisa',
'Bart']
>>>
|
reduce()概念
reduce()把一个函数作用在一个序列[x1, x2, x3…]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算
如果你想学习Python可以来这个群,首先是四七二,中间是三零九,最后是二六一,里面有大量的学习资料可以下载。
题目
Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list并利用reduce()求积
1
2
3
4
5
|
def prod(num_list):
print reduce(
lambda a,b : a*b , num_list)
1,
2,
3,
4])
prod([
24
|
filter概念
filter()接收一个函数和一个序列,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素
题目
请尝试用filter()删除1~100的素数
概念补充: 素数,又称质数(prime number),有无限个。素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#coding=utf-8
#判断是不是素数,不是返回True,是返回False
def not_prime(num):
if(num <
2):
return
True
judge =
2
while(judge < num):
if num%judge ==
0:
return
True
judge +=
1
return
False
#将一个数字列表中所有的素数过滤删除掉
def prime_number(num_list):
print filter(not_prime,num_list)
#删除1~100以内的素数
prime_number(range(
100))
|
1
2
3
|
运行结果:
==================== RESTART: E:\Python\practices\test.py ====================
[
0,
1,
4,
6,
8,
9,
10,
12,
14,
15,
16,
18,
20,
21,
22,
24,
25,
26,
27,
28,
30,
32,
33,
34,
35,
36,
38,
39,
40,
42,
44,
45,
46,
48,
49,
50,
51,
52,
54,
55,
56,
57,
58,
60,
62,
63,
64,
65,
66,
68,
69,
70,
72,
74,
75,
76,
77,
78,
80,
81,
82,
84,
85,
86,
87,
88,
90,
91,
92,
93,
94,
95,
96,
98,
99]
|