【Python實踐-6】將不規範的英文名

  • 2020 年 1 月 16 日
  • 筆記

1 #利用map()函數,把用戶輸入的不規範的英文名字,變為首字母大寫,其他小寫的規範名字。  2 def f1(s):  3     s=s.capitalize()  4     return s  5 list1= ['adam', 'LISA', 'barT']  6 r=list(map(f1,list1))  7 print(r)

知識點:

1、函數,面向過程的程式設計的基本單元。何為面向過程?通過一層一層的函數調用,把複雜任務分解成簡單的任務。

2、函數式編程,一種抽象程度很高的編程範式,純粹的函數式程式語言編寫的函數沒有變數,因此,任意一個函數,只要輸入是確定的,輸出就是確定的,這種純函數我們稱之為沒有副作用。函數式編程的一個特點就是,允許把函數本身作為參數傳入另一個函數,還允許返回一個函數。由於函數內部的變數狀態不確定,同樣的輸入,可能得到不同的輸出,因此,這種函數是有副作用的。Python對函數式編程提供部分支援。由於Python允許使用變數,因此,Python不是純函數式程式語言。

3、高階函數,變數可以指向函數,可以通過該變數來定義函數。>>>f=abs >>>f(-10) 10;函數名其實就是指向函數的變數。所以既然變數可以指向函數,函數的參數能接收變數,那麼一個函數就可以接收另一個函數作為參數,這種函數就稱之為高階函數。

4、Python內建了map()函數map()函數接收兩個參數,一個是函數,一個是Iterablemap將傳入的函數依次作用到序列的每個元素,並把結果作為新的Iterator返回。map()傳入的第一個參數是f1,即函數對象本身。由於結果r是一個IteratorIterator惰性序列,因此通過list()函數讓它把整個序列都計算出來並返回一個list。

5、可迭代對象,可以直接作用於for循環的對象統稱為可迭代對象Iterable,一類是集合數據類型,如listtupledictsetstr等;一類是generator,包括生成器和帶yield的generator function。生成器都是Iterator對象,但listdictstr雖然是Iterable,卻不是Iterator(迭代器。因為Python的Iterator對象表示的是一個數據流,Iterator對象可以被next()函數調用並不斷返回下一個數據,直到沒有數據時拋出StopIteration錯誤。可以把這個數據流看做是一個有序序列,但我們卻不能提前知道序列的長度,只能不斷通過next()函數實現按需計算下一個數據,所以Iterator的計算是惰性的,只有在需要返回下一個數據時它才會計算。

6、Python capitalize()將字元串的第一個字母變成大寫,其他字母變小寫。語法:str.capitalize()。參數:無。返回一個首字母大寫的字元串。注意首字元如果是非字母,首字母不會轉換成大寫,會轉換成小寫。