Python 生成式 lambda 匿名函式

2021-08-25 05:53:28 字數 3524 閱讀 8261

目錄

一、三元表示式 - if …… else

二、列表生成式 - [… for … in …]

三、字典生成式 -

3-1 字典生成式用於集合的生成

四、匿名函式 - lambda

4-1 匿名函式和高階函式

4-1-1 max、min + lambda - 指定函式比較的物件

4-1-2 sorted + lambda - 指定函式的排序依據

4-1-3 map + lambda - 自定義對映規則,返回列表

4-1-4 filter + lambda - 自定義過濾規則,返回列表

4-1-5 reduce + lambda - 自定義合併

五、生成器表示式 - (… for … in …)

[迴圈取出來的值進行運算  for  迴圈取出的變數  in  列表名]

[迴圈取出來滿足if判斷的值進行運算  for  迴圈取出的變數  in  列表名  if  判斷]

語法:

[

expression for item1 in iterable1 if condition1

for item2 in iterable2 if condition2

...for itemn in iterablen if conditionn

]'''

類似於res=

for item1 in iterable1:

if condition1:

for item2 in iterable2:

if condition2

...for itemn in iterablen:

if conditionn:

'''names = ['a','b','c']

l=[name + '_123' for name in names]

print(l)

# ['a_123','b_123','c_123']

l = ['a', 'b', 'c']

# 取出列表的值和索引

for index in enumerate(l):

print(index) # (0, 'a')

keys = ['name','age','***']

vals = ['a','v','c']

dic =

print(dic)

#

# # 

lambda x,y,z=1:x+y+zlambda 引數名們 : 表示式

salaries=

# 注意!!max和min函式對字典的比較是一般情況是key

max(salaries)

min(salaries)

# 通過max函式的key引數,改變max函式的比較依據

# max函式會for迴圈出乙個值,值會被傳給key指定的函式,呼叫key指定的函式,拿到返回值作為依據

# 第乙個值是被max迴圈的物件

a = max(salaries,key=lambda k :salaries[k])

b = min(salaries,key=lambda k :salaries[k])

print(a)

print(b)

nums = [1,4,25,6,7,99]

print(sorted(nums)) # 預設公升序

print(sorted(nums,reverse= true)) # 降序

# 對字典進行排序,key 為指定依賴

res = sorted(salaries,key= lambda name:salaries[name])

print(res)

# map :把乙個列表按照自定義對映規則對映成乙個新的列表

names = ['a', 'b', 'c']

res = map(lambda name: name + '123', names)

print(res) # print(list(res)) # ['a123', 'b123', 'c123']

# filter :從乙個列表中過濾出,符合過濾規則的值形成新的列表

# 相當於for迴圈取出元素,傳給匿名函式,講呼叫匿名函式返回值為true的元素留下

names = ['a12', 'b', 'c12', 'd']

res = filter(lambda name: name.endswith('12'), names)

print(res) # print(list(res)) # ['a12', 'c12']

# 同上

res1 = [name for name in names if name.endswith('12')]

print(res1) # ['a12', 'c12']

print(list(res1)) # ['a12', 'c12']

# reduce :把多個值合併成乙個結果

# reduce(lambda 接受後面兩個的值進行運算,迴圈物件的值,合併引數)

from functools import reduce

li = ['a12', 'b', 'c12', 'd']

# 'a'是合併引數,li 進行迴圈取出列表中的值,兩個值給匿名函式作為引數傳入

# 最後取出來的是乙個合併的字串

res = reduce(lambda x, y: x + y, li, 'a')

print(res) # aa12bc12d

# 進行疊加運算

# 使用()生成生成器,用於迭代;注意!!值僅可消費一次!

g = ((i+2) for i in range(2,27))

print(g) # at 0x00000227ba0eef10>

print(next(g)) # 4

print(next(g)) # 5

# 可以使用在函式呼叫中,且省略一對小括號

sum(i ** 2 for i in range(10))

python 列表生成式,字典生成式

生成乙個列表,列表元素分別為 1 1,2 2.9 9 import math li for i in range 1,10 print li print i i for i in range 1,10 print i i for i in range 1,10 if i 2 0 找出1 10之間的所...

Python 列表生成式 字典生成式

通過生成式可以更加簡潔地生成列表和字典 列表生成式 對比 直接生成資料後加入列表示例 user list list for i in range 10 2 print user list 通過列表生成式直接生成示例 user list x 2for x in range 10 print user ...

Python函式式程式設計之lambda

python可以使用lambda來建立匿名函式。lambda只是乙個表示式,函式題比def簡單的多。lambda主體是乙個表示式,而不是乙個 塊。僅僅能在lambda表示式中封裝有限的邏輯進去。lambda擁有自己的命名空間,且不能訪問自有引數列表之外或全域性命名空間裡的引數。lambda雖然看起來...