閱讀182 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Python-高階函數習題練習

本文是針對map(),reduce()和filter()三個高階函數的程序練習。

map()概念

函數接收兩個參數,一個是函數,一個是序列,map將傳入的函數依次作用到序列的每個元素,並把結果作為新的列表返回。

##### 題目

> 利用函數,把用戶輸入的不規範的英文名字,變為首字母大寫,其他小寫的規範名字。
> 例如輸入:,輸出:

1
2
3
4
5
6

>>> def test(name_list):
print(map(lambda name: name[0].upper()+name[1:].lower(), name_list))
>>> test(['adam','LISA','barT'])
['Adam', 'Lisa', 'Bart']
>>>

reduce()概念

把一個函數作用在一個序列[x1, x2, x3…]上,這個函數必須接收兩個參數,reduce把結果繼續和序列的下一個元素做累積計算

如果你想學習Python可以來這個群,首先是四七二,中間是三零九,最後是二六一,裏麵有大量的學習資料可以下載。

題目

Python提供的函數可以接受一個list並求和,請編寫一個函數,可以接受一個list並利用求積


1
2
3
4
5

>>> def prod(num_list):
print reduce(lambda a,b : a*b , num_list)
>>> prod([1,2,3,4])
24

filter概念

接收一個函數和一個序列,filter()把傳入的函數依次作用於每個元素,然後根據返回值是True還是False決定保留還是丟棄該元素

題目

請嚐試用刪除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]

最後更新:2017-04-09 18:30:16

  上一篇:go 新手
  下一篇:go Java實現全排列、組合算法