內置函數二

1、lambda

  • 表示匿名函數
  • 爲了解決一些簡單的需求而設計的一句話函數

語法: 函數名 =  lambda 參數:返回值數組

  • 函數的參數能夠有多個,多個參數之間用逗號隔開
  • 匿名函數無論多複雜,只能寫一行,且邏輯結束後直接返回數據
  • 返回值和正常的函數同樣,能夠是任意數據類型
f = lambda n: n ** 2
print(f(10))  # 100

print(f.__name__)  # <lambda>

注:匿明函數並非說必定沒有名字。上面f就是一個函數名。說他是匿明緣由是經過__name__查看的時候是沒有名字的。統一叫lambda。在調用時沒有特別之處,像正常函數調用便可。函數

2、sorted()

  • 功能:排序

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

  • key:排序規則(排序函數),在sorted內部會將可迭代對象中的每個元素傳遞給這個函數的參數。根據這個函數運算的結果進行排序
  • reverse:是否倒敘,默認值爲False
lst = [1, 4, 6, 8, 4, 9, 10]

print(sorted(lst))  # [1, 4, 4, 6, 8, 9, 10]

 

與函數組合使用設計

lst = [
    {"name": "電腦", "price": 6000},
    {"name": "手錶", "price": 4000},
    {"name": "耳機", "price": 1000}
]

def func(dic):
    return dic["price"]

print(sorted(lst, key=func))


結果:
[{'name': '耳機', 'price': 1000}, 
 {'name': '手錶', 'price': 4000}, 
 {'name': '電腦', 'price': 6000}]

 

與lambda組合使用code

lst = [
    {"name": "電腦", "price": 6000},
    {"name": "手錶", "price": 4000},
    {"name": "耳機", "price": 1000}
]


print(sorted(lst, key=lambda dic:dic["price"]))


結果:
[{'name': '耳機', 'price': 1000},
 {'name': '手錶', 'price': 4000},
 {'name': '電腦', 'price': 6000}]

3、filter()

  • 功能:篩選

語法:filter(function, Iterable)對象

  • function:用來篩選的函數。在filter中會自動的把Iterable中的元素傳遞給function。而後根據function返回的True or False來判斷是否保留此項數據
 portfolio = [
     {'name': 'IBM', 'shares': 100, 'price': 91.1},
     {'name': 'AAPL', 'shares': 50, 'price': 543.22},
     {'name': 'FB', 'shares': 200, 'price': 21.09},
     {'name': 'HPQ', 'shares': 35, 'price': 31.75},
     {'name': 'YHOO', 'shares': 45, 'price': 16.35},
     {'name': 'ACME', 'shares': 75, 'price': 115.65}
 ]


lst = list(filter(lambda dic: dic["price"] > 100, portfolio))
print(lst)


結果:
[{'name': 'AAPL', 'shares': 50, 'price': 543.22}, 
{'name': 'ACME', 'shares': 75, 'price': 115.65}

 

4、map()

  • 映射函數

語法:map(function, Iterable)blog

  • 能夠對可迭代對象中的每個元素進行映射。分別去執行function,保留最後的執行結果
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]

 5、issubclass()

  • 判斷xxx類是不是yyy類型的子類
  • 能夠隔代判斷
class Base:
    pass

class Foo(Base):
    pass

class Bar(Foo):
    pass

print(issubclass(Bar, Foo))   # True
print(issubclass(Foo, Bar))   # False
print(issubclass(Bar, Base))  # True

6、type()

  • 返回xxx是什麼類型
  • 能夠精準的返回數據類型
print(type("hello"))  # <class 'str'>

class Person(object):
    pass

obj = Person()

print(type(Person))  # <class 'type'>
print(type(obj))     # <class '__main__.Person'>

7、isinstance()

  • 判斷xxx對象是不是xxx類型
  • 能夠判斷該對象是不是xxx家族體系中的(只能往上判斷)
class Animal:
    pass


class Cat(Animal):
    pass


class Persian_Cat(Cat):
    pass

kitty = Cat()
print(isinstance(kitty, Cat))           # True
print(isinstance(kitty, Persian_Cat))   # False
print(isinstance(kitty, Animal))        # True
相關文章
相關標籤/搜索