【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()
函數接收兩個參數,一個是函數,一個是Iterable
,map
將傳入的函數依次作用到序列的每個元素,並把結果作為新的Iterator
返回。map()
傳入的第一個參數是f1
,即函數對象本身。由於結果r
是一個Iterator
,Iterator
是惰性序列,因此通過list()
函數讓它把整個序列都計算出來並返回一個list。
5、可迭代對象,可以直接作用於for
循環的對象統稱為可迭代對象Iterable
,一類是集合數據類型,如list
、tuple
、dict
、set
、str
等;一類是generator
,包括生成器和帶yield
的generator function。生成器都是Iterator
對象,但list
、dict
、str
雖然是Iterable
,卻不是Iterator(
迭代器
)
。因為Python的Iterator
對象表示的是一個數據流,Iterator對象可以被next()
函數調用並不斷返回下一個數據,直到沒有數據時拋出StopIteration
錯誤。可以把這個數據流看做是一個有序序列,但我們卻不能提前知道序列的長度,只能不斷通過next()
函數實現按需計算下一個數據,所以Iterator
的計算是惰性的,只有在需要返回下一個數據時它才會計算。
6、Python capitalize()將字元串的第一個字母變成大寫,其他字母變小寫。語法:str.capitalize()。參數:無。返回一個首字母大寫的字元串。注意首字元如果是非字母,首字母不會轉換成大寫,會轉換成小寫。