- 1、Python 簡明教程 —13,Python 集合
- 2、Python基礎實戰之函數的參數講解(三)
- 3、python所有內置函數的定義詳解
- 4、一文讀懂Python 高階函數
目錄
前幾節我們已經介紹了Python 中的 列表list , 元組tuple 和 字典dict ,本節來介紹Python 中的最後一種數據結構—— 集合set 。
Python 中的 set 與 dict 很像,唯一的不同是, dict 中保存的是 鍵值對 ,而 set 中只保存 鍵 ,沒有 值 。
Python 集合 有如下特點:
Python 集合的聲明有兩種方式:
創建 空集合 時,只能用 set() ,而不能用 {} :
創建 非空集合 時,可以用 set() ,也可以用 {} :
由於集合中的元素是唯一的,如果初始化時的 可迭代 數據中有重複的元素,則會自動刪去重複的元素:
使用 len() 函數可以查看集合中元素的個數:
由於Python 集合中的元素的是無序的,所以可不能使用 下標 的方式來訪問集合中的單個元素。
我們可以使用 for 循環 來遍歷集合中的所有元素:
我們可以對兩個集合進行如下運算:
交集與並集
in 運算
使用 dir(set) 查看集合支持的所有方法:
下面一一介紹這些 非魔法方法 ,共17 個。
1. add 方法
由於集合中的元素是唯一的,向集合中添加元素時有兩種情況:
示例:
2. remove 方法
示例:
3. discard 方法
示例:
4. pop 方法
示例:
5. union 方法
示例:
6. update 方法
示例:
7. clear 方法
示例:
8. copy 方法
示例:
9. difference 方法
示例:
10. difference_update 方法
示例:
11. intersection 方法
示例:
12. intersection_update 方法
示例:
13. isdisjoint 方法
示例:
14. issubset 方法
示例:
15. issuperset 方法
示例:
16. symmetric_difference 方法
示例:
17. symmetric_difference_update 方法
示例:
(完。)
推薦閱讀:
Python 簡明教程 — 8,Python 字元串函數
Python 簡明教程 — 9,Python 編碼
Python 簡明教程 —10,Python 列表
Python 簡明教程 —11,Python 元組
Python 簡明教程 —12,Python 字典
參數可以是任意類型。
比如可以是列表。
——————————-
library=[‘python精通’,’MySQL’,’數據分析’,’人工智慧’]
#形參
def add_book(bookname):
library.append(bookname)
print(‘圖書添加成功!’)
pass
def show_book(books):
for book in books:
print(book)
pass
pass
#調用函數
add_book(‘新概念英語’)
show_book(library)
——————————
#輸出列表中所有大於50的數
list1=[23,45,77,88,58,10]
def get_list(list_1):
new_list=[ ]
for e in list_1:
if e=50:
new_list.append(e)
pass
pass
print(new_list)
pass
#調用函數
get_list(list1) #[77,88,58]
——————————
#刪除列表中小於50的數
def remove_from_list(list_1):
n=0
while nlen(list_1): p=”” /len(list_1):
if list_1[n]50:
list_1.remove(list_1[n])
pass
else:
n+=1
pass
pass
print(list_1)
pass
#調用函數
remove_from_list(list1) #[77,88,58]
1、定義函數
函數是可重用的程序。本書中已經使用了許多內建函數,如len()函數和range()函數,但是還沒自定義過函數。定義函數的語法格式如下:
def 函數名(參數):
函數體
定義函數的規則如下:
①關鍵字def用來定義一個函數,它是define的縮寫。
②函數名是函數的唯一標識,函數名的命名規則遵循標識符的命名規則。
③函數名後面一定要緊跟著一個括弧,括弧內的參數是可選的,括弧後面要有冒號。
④函數體(statement)為一個或一組Python語句,注意要有縮進。
⑤函數體的第一行可以有文檔字元串,用於描述函數的功能,用三引號括起來。
按照定義規則,可以定義第一個函數了:
def hello_world():
… print(‘Hello,world!’) # 注意函數體要有縮進
…
hello_world()
Hello,world!
這個函數不帶任何參數,它的功能是列印出「Hello,world!」。最後一行代碼hello_world()是調用函數,即讓Python執行函數的代碼。
2、全局變數和局部變數
全局變數是定義在所有函數外的變數。例如,定義一個全局變數a,分別在函數test1()和test2()使用變數a:
a = 100 # 全局變數
def test1():
… print(a)
…
def test2():
… print(a)
…
test1()
100
test2()
100
定義了全局變數a之後,在函數test1()和test2()內都可以使用變數a,由此可知,全局變數的作用範圍是全局。
局部變數是在函數內定義的變數,除了用關鍵字global修飾的變數以外。例如,在函數test1()內定義一個局部變數a,分別在函數外和另一個函數test2()內使用變數a:
def test1():
… a = 100 # 局部變數
… print(a)
…
def test2():
… print(a)
…
test1()
100
print(a)
Traceback (most recent call last):
File “stdin”, line 1, in module
NameError: name ‘a’ is not defined
test2()
Traceback (most recent call last):
File “stdin”, line 1, in module
File “stdin”, line 2, in test2
NameError: name ‘a’ is not defined
Python解釋器提示出錯了。由於局部變數a定義在函數test1()內,因此,在函數test1()內可以使用變數a,但是在函數外或者另一個函數test2()內使用變數a,都會報錯,由此可見,局部變數的作用範圍是定義它的函數內部。
一般情況下,在函數內聲明的變數都是局部變數,但是採用關鍵字global修飾的變數卻是全局變數:
def test1():
… global a # 全局變數
… a = 100
… print(a)
…
def test2():
… print(a)
…
test1()
100
print(a)
100
test2()
100
這個程序與上個程序相比,只是在函數test1()中多了一行代碼「global a」,程序便可以正確運行了。在函數test1()中,採用關鍵字global修飾了變數a之後,變數a就變成了全局變數,不僅可以在該函數內使用,還可以在函數外或者其他函數內使用。
如果在某個函數內局部變數與全局變數同名,那麼在該函數中局部變數會覆蓋全局變數:
a = 100 # 全局變數
def test1():
… a = 200 # 同名局部變數
… print(a)
…
def test2():
… print(a)
…
test1()
200
test2()
100
由於在函數test1()中定義了一個與全局變數同名的局部變數a,因此,在函數test1()中全局變數a的值被局部變數覆蓋了,但是在函數test2()中全局變數a的值沒有被覆蓋。
綜上所述,在Python中,全局變數保存的數據供整個腳本文件使用;而局部變數只用於臨時保存數據,變數僅供局部代碼塊使用。
將函數作為參數傳入,這樣的函數稱為高階函數。 函數式編程就是指這種高度抽象的編程範式。
變數可以指向函數,函數的參數能接收變數,那麼一個函數就可以接收另一個函數作為參數,這種函數就稱之為高階函數。如下所示:
map(fun, lst),將傳入的函數變數func作用到lst變數的每個元素中,並將結果組成新的列表返回。
定義一個匿名函數並調用,定義格式如–lambda arg1,arg2…:表達式
reduce把一個函數作用在一個序列[x1, x2, x3, …]上,這個函數必須接收兩個參數,reduce把結果繼續和序列的下一個元素做累積計算。
filter() 函數用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
閉包的定義?閉包本質上就是一個函數
如何創建閉包?
如何使用閉包?典型的使用場景是裝飾器的使用。
global與nonlocal的區別:
簡單的使用如下:
偏函數主要輔助原函數,作用其實和原函數差不多,不同的是,我們要多次調用原函數的時候,有些參數,我們需要多次手動的去提供值。
而偏函數便可簡化這些操作,減少函數調用,主要是將一個或多個參數預先賦值,以便函數能用更少的參數進行調用。
我們再來看一下偏函數的定義:
類func = functools.partial(func, *args, **keywords)
我們可以看到,partial 一定接受三個參數,從之前的例子,我們也能大概知道這三個參數的作用。簡單介紹下:
總結
本文是對Python 高階函數相關知識的分享,主題內容總結如下:
原創文章,作者:ODC2H,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/126864.html