一、函式
1.1、函式的關鍵字
def 定義函式1.2、高階函式return 返回值
pass 佔位
exit(1) 直接退出並返回1
高階函式都是可以通過**邏輯實現,但是自己寫的函式的複雜程度或者演算法不一定有人家內建的好
①、map高階函式:
def f(x):②、filter()函式用於過濾序列,和map()類似,filter()也接收乙個函式和乙個序列。和map()不同的是,filter()把傳入的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素,例子:return x*x
print(map(f, [1, 2, 3, 4]))
print(list((map(f, [1, 2, 3, 4]))))
for i in map(f, [1, 2, 3, 4]):
print(i)
仿照map:
def testmap(fun, iter):
l = list()
for i in iter:
return l
print(testmap(f, [1, 2, 3, 4]))
filter(lamdba x: x%2 ==1, [1, 2, 3, 4, 5])
def add(x, y):④、sorted排序return x+y
reduce(add, [1, 2, 3, 4, 5])
# 1, 2 = 3
# 3, 3 = 6
# 6, 4 = 10
# 10, 5 = 15
引數:sorted(iterable, key, reverse)
iterable 乙個可迭代的物件、 key 對什麼進行排序、 reverse bool型別,如果為true為反序, 預設為false、 返回值是乙個list
print(sorted([1, 4, 342, 3, 45, 76, 435, 34], reverse=true))對字典的key或者val進行排序:
m = dict(a=1, c=10, b=20, d=15)1.3、列表生成式(執行效率高且經常用):print(m)
print(sorted(m.items()))
print(sorted(m.items(), key=lambda x: x[0]))
print(dict(sorted(m.items(), key=lambda x: x[1])))
# print(sorted(m.items(), key = lambda d:d[1], reverse = true))
[exp for val in collection if condition]例子(九宮格):a2 = [x for x in range(1, 10) if x%2==0]
print(a2)
1.4、生成器:
1.5、示例(把1.xtx的內容按照uid排序):方法一:(exp for val in collection if condition)
a1 = (x for x in range(1, 10) if x%2==0)print(a1)
for i in a1:
print(i)
print(next(a1)) #python3 是直接呼叫next方法,python2中是使用a1.next()
方法二:
def test():
a = 1
for i in range(1, 10):
yield i
# return i
a += 1
# return i
# yield 可以理解成return,但是比return多一些角色
m = test()
print(m)
1.6、函式的設計規範import codecswith codecs.open("1.txt", "r") as l:
result = sorted(l.readlines(), key=lambda item: int(item.split(":")[2]))
for i in result:
print(i)
耦合性:
①、通過引數接收輸入,以及通過return產生輸出以保證函式的獨立性;
②、儘量減少使用全域性變數進行函式間的通訊;
③、不要在函式中修改可變型別的引數;
④、避免直接改變定義在另外乙個模組中的變數;
聚合性:
①、每個函式都應該有乙個單一的、統一的目標;
②、每個函式的功能都應該相對簡單;
函式與生成器
一 函式屬性 函式可以在內部建立預設的屬性,還可以在外部通過句點屬性識別符號來動態建立該函式的屬性。def foo foo properly created doc string def bar pass foo.doc foo properly created doc string bar.doc...
python生成器函式 Python 生成器函式
一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...
生成器函式
pyhon優雅的魔力使生成器函式很特殊,它們像定格相機一樣工作。當乙個標準函式遇到return語句時,它會返回值,然後函式會丟棄內部的所有資料。當下次呼叫時,一切從頭開始。yield語句會做不同的事情。它像return一樣返回乙個值,但是它不會使函式丟棄資料,相反所有資料都被儲存起來。usr bin...