再看lambda/sorted/filter/map

  • lambda表達式python

    這個函數用於一些簡單的邏輯,請看下面這個例子:函數

    def func(x):
        return x ** 2

    上面這個函數邏輯很簡單,對於咱們來講,最重要的就是參數和返回值。正好lambda表達式應運而生:code

    lambda 參數值:返回值

    所以對於第一個函數,能夠改寫成這樣:對象

    func = lambda x:x**2
    print(func(10))

    求兩個數的和:排序

    # 定義函數
    def sum(a,b):
        return a+b
    # lambda表達式
    sum=lambda a,b:a+b
  • sorted函數qt

    語法:sorted(iterable,key=None,reverse=False)

    這裏面key是一個函數it

    def func(item):
        return len(item)
    lst = ["歐陽東明", "劉偉", "劉能", "趙四", "王大拿", "趙瑞鑫"]
    res = sorted(lst, key=func)
    print(res)
    lst = ["歐陽東明", "劉偉", "劉能", "趙四", "王大拿", "趙瑞鑫"]
    res = sorted(lst, key=lambda item: len(item), reverse=True)
    print(res)

    key能夠先寫正常的函數,再改寫成lambda表達式。io

    練習:按照年齡對學生信息排列function

    lst = [
        {"id": 1, "name": "alex", "age": 18},
        {"id": 2, "name": "test", "age": 19},
        {"id": 3, "name": "dgf", "age": 17},
    
    ]
    
    res = sorted(lst, key=lambda item: item['age'])
    print(res)

    練習:按照學生姓名長度進行排序class

    lst = [
        {"id": 1, "name": "alex", "age": 18},
        {"id": 2, "name": "tesqt", "age": 19},
        {"id": 3, "name": "dgf", "age": 17},
    
    ]
    
    res = sorted(lst, key=lambda item: len(item['name']))
    print(res)
  • filter篩選

    語法:filter(function,iterable)
    function:用來篩選的函數,在filter中會自動把iterable中的元素傳遞給function。而後根據function返回的True或者False來判斷是否保留此數據。
    # 篩選出大於18的數
    lst = [11, 15, 18, 85, 45]
    res = filter(lambda item: item >= 18, lst)
    for el in res:
        print(el, end=' ')
  • map映射

    語法:map(funtion,iterable)
    # 能夠對可迭代對象中的每個元素進行映射,分別執行function。

    計算每一個元素的平方:

    lst = [11, 15, 18, 85, 45]
    res = map(lambda x: x ** 2, lst)
    print(list(res))
相關文章
相關標籤/搜索