高階函數:我的理解就是閉包、內嵌函數
舉例:
計數器:
有問題麼?
問題出在base+=step,對base賦值,局部變量,沒有先定義
改進:聲明爲非局部變量nonlocal,但是不要是global變量
觀察一下:
id(f1)
id(f2)
f1==f2
自定義sort函數:
以下是加入reverse參數的改進:推薦flag的用法
改寫爲高階函數,注意comp函數:
comp函數比較通用。可以抽象出來。如下:
再改寫成高階函數形式:
先簡化一下comp函數,使其不帶reverse參數:
替換成sort自己的調用:
再進一步改造comp函數爲匿名函數lambda a,b:a<b
再改造一下,去掉reverse參數嗎,由匿名函數比較關係決定升序還是降序
知識點補充:enumerate、集合set操作
>>> import random
>>> l=[random.randint(1,100) for i in range(5)]
>>> l
[10, 14, 62, 30, 45]
>>> print(list(enumerate(l)))
[(0, 10), (1, 14), (2, 62), (3, 30), (4, 45)]
>>> for e in enumerate(l):
print(e[0])
0
1
2
3
4
>>> for i,x in enumerate(l):
print(i,' ',x)
0 10
1 14
2 62
3 30
4 45
>>> k=set(l)
>>> k
{10, 45, 14, 30, 62}
| add(...)
| Add an element to a set.
|
| This has no effect if the element is already present.
|
| clear(...)
| Remove all elements from this set.
|
| copy(...)
| Return a shallow copy of a set.
|
| difference(...)
| Return the difference of two or more sets as a new set.