鮮為人知的五種 Python 高級(jí)特性

x?=?lambda?a,?b?:?a?*?b
print(x(5,?6))?#?prints? 30
x?=?lambda?a?:?a*3?+?3
print(x(3))?#?prints? 12
def?square_it_func(a):
????return?a?*?a
x?=?map(square_it_func,?[1,?4,?7])
print(x)?#?prints? [1,?16,?49]
def?multiplier_func(a,?b):
????return?a?*?b
x?=?map(multiplier_func,?[1,?4,?7],?[2,?5,?8])
print(x)?#?prints? [2,?20,?56] 看看上面的示例!我們可以將函數(shù)應(yīng)用于單個(gè)或多個(gè)列表。實(shí)際上,你可以使用任何 Python 函數(shù)作為 map 函數(shù)的輸入,只要它與你正在操作的序列元素是兼容的。
#?Our?numbers
numbers?=?[1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15]
#?Function?that?filters?out?all?numbers?which?are?odd
def?filter_odd_numbers(num):
????if?num?%?2?==?0:
????????return?True
????else:
????????return?False
filtered_numbers?=?filter(filter_odd_numbers,?numbers)
print(filtered_numbers)
#?filtered_numbers?=?[2,?4,?6,?8,?10,?12,?14]
from?itertools?import?*
#?Easy?joining?of?two?lists?into?a?list?of?tuples
for?i?in?izip([1,?2,?3],?[ a ,? b ,? c ]):
????print?i
#?( a ,?1)
#?( b ,?2)
#?( c ,?3)
#?The?count()?function?returns?an?interator?that?
#?produces?consecutive?integers,?forever.?This?
#?one?is?great?for?adding?indices?next?to?your?list?
#?elements?for?readability?and?convenience
for?i?in?izip(count(1),?[ Bob ,? Emily ,? Joe ]):
????print?i
#?(1,? Bob )
#?(2,? Emily )
#?(3,? Joe )????
#?The?dropwhile()?function?returns?an?iterator?that?returns?
#?all?the?elements?of?the?input?which?come?after?a?certain?
#?condition?becomes?false?for?the?first?time.?
def?check_for_drop(x):
????print? Checking:? ,?x
????return?(x?>?5)
for?i?in?dropwhile(should_drop,?[2,?4,?6,?8,?10,?12]):
????print? Result:? ,?i
#?Checking:?2
#?Checking:?4
#?Result:?6
#?Result:?8
#?Result:?10
#?Result:?12
#?The?groupby()?function?is?great?for?retrieving?bunches
#?of?iterator?elements?which?are?the?same?or?have?similar?
#?properties
a?=?sorted([1,?2,?1,?3,?2,?1,?2,?3,?4,?5])
for?key,?value?in?groupby(a):
????print(key,?value),?end= ? )
#?(1,?[1,?1,?1])
#?(2,?[2,?2,?2])?
#?(3,?[3,?3])?
#?(4,?[4])?
#?(5,?[5])?
#?(1)?Using?a?for?loopv
numbers?=?list()
for?i?in?range(1000):
????numbers.append(i+1)
total?=?sum(numbers)
#?(2)?Using?a?generator
?def?generate_numbers(n):
?????num,?numbers?=?1,?[]
?????while?num????????????numbers.append(num)
?????num?+=?1
?????return?numbers
?total?=?sum(generate_numbers(1000))
?#?(3)?range()?vs?xrange()
?total?=?sum(range(1000?+?1))
?total?=?sum(xrange(1000?+?1))
推薦閱讀:《架構(gòu)師離職后,成為自由開發(fā)者的第 100 天》
END
若覺得文章對(duì)你有幫助,隨手轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動(dòng)力。
長(zhǎng)按二維碼,掃掃關(guān)注哦
?「C語言中文網(wǎng)」官方公眾號(hào),關(guān)注手機(jī)閱讀教程??

點(diǎn)擊“閱讀原文”,領(lǐng)取 2020 年最新免費(fèi)技術(shù)資料大全
評(píng)論
圖片
表情
