Flink之複雜事物處理(CEP)
阿新 • • 發佈:2020-10-26
1. lambda基本使用
1. lambda只是一個表示式,函式體比def簡單很多。
2. lambda的主體是一個表示式,而不是一個程式碼塊。僅僅能在lambda表示式中封裝有限的邏輯進去。
3. lambda表示式是起到一個函式速寫的作用。允許在程式碼內嵌入一個函式的定義。
4. 格式:lambda的一般形式是關鍵字lambda後面跟一個或多個引數,緊跟一個冒號,之後是一個表示式。
f = lambda x,y,z:x+y+z
print(f(1,2,3)) # 6
my_lambda = lambda arg : arg + 1
print(my_lambda(10)) # 11
2.
1. 三元運算格式: result=值1 if x<y else 值2 if條件成立result=1,否則result=2
2. 作用:三元運算,又稱三目運算,主要作用是減少程式碼量,是對簡單的條件語句的縮寫
name = 'Tom' if 1 == 1 else 'fly'
print(name)
# 執行結果: Tom
f = lambda x:x if x % 2 != 0 else x + 100
print(f(10)) # 110
3. filter()函式可以對序列做過濾處理
利用 filter、lambda表示式 獲取l1中元素小於33的所有元素 l1 = [11, 22, 33, 44, 55]
l1= [11,22,33,44,55]
a = filter(lambda x: x<33, l1)
print(list(a))
4. Map是對序列根據設定條件進行操作後返回他設定的是操作方法
利用map,lambda表示式將所有偶數元素加100
l1= [11,22,33,44,55]
ret = map(lambda x:x if x % 2 != 0 else x + 100,l1)
print(list(ret))
# 執行結果: [11, 122, 33, 144, 55]
5. reduce函式
使用reduce進行求和運算
1.reduce()函式即為化簡函式,它的執行過程為:每一次迭代,都將上一次的迭代結果與下一個元素一同傳入二元func函式中去執行。
2.在reduce()函式中,init是可選的,如果指定,則作為第一次迭代的第一個元素使用,如果沒有指定,就取seq中的第一個元素。
from functools import reduce
def f(x, y):
return x + y
print(reduce(f, [1, 3, 5, 7, 9])) # 25
# 1、先計算頭兩個元素:f(1, 3),結果為4;
# 2、再把結果和第3個元素計算:f(4, 5),結果為9;
# 3、再把結果和第4個元素計算:f(9, 7),結果為16;
# 4、再把結果和第5個元素計算:f(16, 9),結果為25;
# 5、由於沒有更多的元素了,計算結束,返回結果25。
print( reduce(lambda x, y: x + y, [1, 3, 5, 7, 9]) ) # 25
6. sorted函式
sorted對字典排序
d = {'k1':1, 'k3': 3, 'k2':2}
# d.items() = [('k1', 1), ('k3', 3), ('k2', 2)]
a = sorted(d.items(), key=lambda x: x[1])
print(a) # [('k1', 1), ('k2', 2), ('k3', 3)]