python的enumerate lambda isinstance filter函式

樑十安發表於2019-08-02

0x01:filter(function,iterable)

  1. filter()函式用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
  2. 接收兩個引數,第一個為函式,第二個為序列(可迭代物件),序列的每個元素作為引數傳遞給函式進行判斷,返回True或False,將返回True的元素放到新列表中。
  3. 返回值是filter類的一個物件,可以用list函式轉化成列表

eg:輸出1-100內所有的完全平方數

1 import math
2 def is_sqr(x):
3     return math.sqrt(x) % 1 == 0
4 print(list(filter(is_sqr, range(1, 101))))

輸出結果如下:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

0x02:enumerate(iterable, start)

  1. 函式用於將一個可遍歷的資料物件(如列表、元組或字串)組合為一個索引序列,同時列出資料和資料下標,一般用在 for 迴圈當中
  2. 返回一個enumerate類的物件
  3. 接受兩個引數,第一個是資料物件,第二個是索引開始的位置
1 s = ['a', 'b', 'c', 'c']
2 print(type(enumerate(s)))
3 for a, b in enumerate(s, start=9):
4     print('下標{}'.format(a), end='    ')
5     print('值{}'.format(b))

輸出結果如下:
<class 'enumerate'>
下標9    值a
下標10    值b
下標11    值c
下標12    值c

0x03:isinstance

  1. 判斷一個物件是否為某一資料型別
  2. 判斷子類是否繼承與某個父類,isinstance會認為子類屬於父類的型別,而type不會。
  3. 接受兩個引數,第一個引數為資料物件,第二個引數為資料型別,或資料型別組成的元祖
 1 class A(object):
 2     pass
 3 class B(A):
 4     pass
 5 
 6 b = B()
 7 print(isinstance(b, A))  # 判斷b是否屬於父類A,isinstance返回True,type返回false
 8 print(type(b) == A)
 9 
10 a = 3
11 c = 6
12 print(isinstance(a, int))  # 判斷物件是否屬於int型別
13 print(isinstance(c, (str, list, tuple, int)))  # 判斷物件是否屬於遠足中資料型別中的任一個

輸出結果如下:
True
False
True
True

0x04:lambda

  1. 格式:lambda [parameter_list] : lambda後是引數,如果有多個引數,用 , 隔開, :後是返回值,一般是對出傳入的引數的操作或判斷
  2. 使用 lambda 表示式,可以定義簡單的單行函式,省去定義函式的過程,不需要使用def關鍵字,讓程式碼更加簡潔。
  3. 對於不需要多次複用的函式,使用 lambda 表示式可以在用完之後立即釋放,提高了效能。
f = lambda x, y, z :x+y+z
a = f(1,2,3)
print(a)

輸出結果:
6

可以理解成使用lambda關鍵字定義了一個f物件,這個物件需要傳入x y z三個引數,並把運算x+y+z後的結果返回給a

(ps:還處於起步的小菜雞,若有錯誤,大佬們隨時指正。。。。。嘻嘻)

*************************不積跬步,無以至千里。*************************

相關文章