1. 程式人生 > >Python 內置函數 -- zip(), sorted(), filter()和map()

Python 內置函數 -- zip(), sorted(), filter()和map()

lam 列表 dir 位置 個數 -- sorted rev 流程

內置函數
1. zip() 打包(木桶效應)
描述: zip() 函數用於將可叠代的對象作為參數, 將對象中對應的元素打包成一個個元組, 然後返回由這些元組組成的列表
語法: zip([iterable, ...])
參數: iterable -- 一個或多個叠代器
返回值: 返回可叠代對象
# 實例:
lst1 = ["中國", "美國", "俄羅斯", "日本"]
lst2 = ["北京", "華盛頓", "莫斯科"]
lst3 = ["烤鴨", "炸雞", "黃油+面包", "壽司"]
lst = zip(lst1, lst2, lst3) # 合並列表, 返回可叠代對象, 水桶效應
print
(lst) print(list(lst)) print("__iter__" in dir(lst))
輸出結果:
<zip object at 0x0000005E0A4DCEC8>
[(‘中國‘, ‘北京‘, ‘烤鴨‘), (‘美國‘, ‘華盛頓‘, ‘炸雞‘), (‘俄羅斯‘, ‘莫斯科‘, ‘黃油+面包‘)]
True

需要註意的是:
(1)zip()函數具有水桶效應
(2)zip()函數返回的是一個叠代器, 直接打印zip()函數的結果是一個內存地址


2. sorted() 排序
執行流程: 把可叠代對象iterable中的每一個元素拿出來, 放到func中運行, 返回一個數字, 根據數字進行排序
描述: sorted() 函數對所有可叠代的對象進行排序操作
語法: sorted(iterable, key=func, reverse=True/False)
參數說明: iterable -- 可叠代對象
func -- 排序規則
reverse=True表示降序排列, reverse=False表示升序排列
返回值: 返回排序後的列表


實例1:
lst = ["王乃卉", "劉能", "趙四", "王大拿", "範偉", "沈騰"]
lst1 = sorted(lst, key=lambda name: len(name) % 3)
print(lst1)
輸出結果:
[‘王乃卉‘, ‘王大拿‘, ‘劉能‘, ‘趙四‘, ‘範偉‘, ‘沈騰‘]

實例2:按照年齡對學?信息進行排序
lst = [
    {"id": 1, "name": alex, "age": 18},
    {"id": 2, "name": wusir, "age": 16},
    {"id": 3, "name": taibai
, "age": 17}, ] l2 = sorted(lst, key=func) print(l2) l3 = sorted(lst, key=lambda dic: dic[age]) l4 = sorted(lst, key=lambda dic: len(dic[name])) l5 = sorted(lst, key=lambda dic: ascii(dic[name][0])) print(l5)
sorted()函數最大的優點是可以按照自己的規則(自己定義的函數)來排序


3. filter() 篩選
執行流程: 把可叠代對象中的每一個元素拿出來, 放到func中運行, 返回True或False, 根據返回的True和False來決定這個元素是否保留
描述: filter() 函數用於過濾序列, 過濾掉不符合條件的元素, 返回由符合條件的元素組成的叠代器
語法: filter(function, iterable)
參數: function -- 判斷函數
iterable -- 可叠代對象
返回值: 返回叠代器
註意: filter()的作用是篩選,所以function的功能是判斷

實例:
(本題會用到lambda匿名函數, 如果不了解請點擊這裏)
lst = [23, 28, 15, 27, 24, 22]
f = filter(lambda age: age > 18 and age % 2 == 0, lst)
print(list(f))      # 要把返回的叠代器轉換成列表才能打印出來


4. map() 映射
執行流程: 把可叠代對象中的每一個元素拿出來, 放到func中運行, 返回數據就是結果
描述: map()會根據提供的函數對指定序列做映射
語法: map(function, iterable, ...)
參數: function -- 函數
iterable -- 一個或多個序列
返回值: 返回叠代器
註意: map()的作用是映射,所以function的功能是作為對應法則輸出目標值

實例1:
lst = [1,5,9,3]
m = map(lambda x: x**2, lst)
print(list(m))
輸出結果:
[1, 25, 81, 9]

實例2:計算兩個列表相同位置的數據的和
lst1 = [1, 2, 3, 4, 5]
lst2 = [2, 4, 6, 8, 10]
print(list(map(lambda x, y: x + y , lst1, lst2)))
輸出結果:
[3, 6, 9, 12, 15]

Python 內置函數 -- zip(), sorted(), filter()和map()