1、map
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)天元免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
map()函數(shù)接受兩個參數(shù),一個是函數(shù),一個是Iterable,map將傳入的函數(shù)依次作用到序列的每一個元素上,并把結(jié)果作為新的Iterator返回。
舉例,比如我們有一個函數(shù)f(x)=x*2,要把這個函數(shù)作用在一個list[1, 2, 3, 4, 5, 6, 7, 8,
9]上,就可以用map()實(shí)現(xiàn)。
def f(x):
... return x*2
...
r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
list(r)
[2, 4, 6, 8, 10, 12, 14, 16, 18]
所以,map()作為高階函數(shù),事實(shí)上它把運(yùn)算規(guī)則抽象了,因此,我們不但可以計算簡單的f(x)=x*2,還可以計算任意復(fù)雜的函數(shù),比如把這個list所有的數(shù)字轉(zhuǎn)為字符串:
list(map(str,[1, 2, 3, 4, 5, 6, 7, 8, 9]))
["1", "2", "3", "4", "5", "6", "7", "8", "9"]
2、reduce
reduce是把一個函數(shù)作用在一個序列[x1, x2,
x3……]上,這個函數(shù)必須接收兩個參數(shù),reduce把結(jié)果繼續(xù)和序列的下一個元素做累計計算。簡單來說,就是先計算x1和x2的結(jié)果,再拿結(jié)果與x3計算,依次類推。比如說一個序列求和,就可以用reduce實(shí)現(xiàn)。
from functools import reduce
def add(x, y):
... return x + y
...
reduce(add, [1, 3, 5, 7, 9])
25
也就是說,假設(shè)python沒有提供int()函數(shù),你完全可以自己寫一個把字符串轉(zhuǎn)化為整數(shù)的函數(shù),而且只需要幾行代碼。
3、filter
用于過濾序列,和map函數(shù)類似,filter也接收一個函數(shù)和一個序列,不同于map的是,filter把傳入的函數(shù)依次作用于每一個元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素,例如,在一個list中,刪掉偶數(shù),只保留奇數(shù),可以這么寫:
def is_odd(n):
return n % 2 == 1
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 結(jié)果: [1, 5, 9, 15]
把一個序列中的空字符串刪掉,可以這么寫:
def not_empty(s):
return s and s.strip()
list(filter(not_empty, ["A", "", "B", None, "C", " "]))
# 結(jié)果: ["A", "B", "C"]
可見用filter()這個高階函數(shù),關(guān)鍵在于正確實(shí)現(xiàn)一個篩選函數(shù)。
4、sorted
無論冒泡排序還是快速排序,排序的核心是比較兩個元素的大小。如果是數(shù)字,我們可以直接比較,但如果是字符串或者兩個dict呢?直接比較數(shù)學(xué)上的大小是沒有意義的,因此,比較的過程必須通過函數(shù)抽象出來,Python內(nèi)置的sorted()函數(shù)就可以對list進(jìn)行排序:
sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]
此外,sorted()函數(shù)也是一個高階函數(shù),它還可以接收一個key函數(shù)來實(shí)現(xiàn)自定義的排序,例如按絕對值大小排序:
sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]
要輸出even變量和odd變量的結(jié)果,用下面兩條語句:
print(even)
print(odd)
print是一個輸出函數(shù),可以輸出任何變量的值。
是python的odd的函數(shù)。
1、sum函數(shù),Python中的求和運(yùn)算。2、參數(shù),iterable。iterable為可迭代對象,可以是list,tuple或者dictionary等。start,指定相加的參數(shù),如果沒有設(shè)置這個值,默認(rèn)為0。
函數(shù)在數(shù)學(xué)中是兩不為空集的集合間的一種對應(yīng)關(guān)系,輸入值集合中的每項(xiàng)元素皆能對應(yīng)唯一一項(xiàng)輸出值集合中的元素。其定義通常分為傳統(tǒng)定義和近代定義,前者從運(yùn)動變化的觀點(diǎn)出發(fā),而后者從集合、映射的觀點(diǎn)出發(fā)。函數(shù)概念含有三個要素。定義域A、值域C和對應(yīng)法則f。
如果要求a到b之間所有奇數(shù)的和,可以使用Python的range函數(shù),這個函數(shù)可以生成一個指定范圍內(nèi)的整數(shù)序列。例如,要生成從1到10的整數(shù)序列,可以使用range(1, 11)。
要求奇數(shù)和,可以在生成整數(shù)序列的基礎(chǔ)上,使用Python的filter函數(shù)來過濾出序列中的奇數(shù)。filter函數(shù)可以接受一個函數(shù)作為參數(shù),并根據(jù)這個函數(shù)的返回值來過濾序列中的元素。例如,要過濾出序列[1, 2, 3, 4, 5]中的奇數(shù),可以使用以下代碼:
def is_odd(x):
return x % 2 != 0
odd_numbers = filter(is_odd, [1, 2, 3, 4, 5])
最后,要求過濾出的奇數(shù)的和,可以使用Python的sum函數(shù)。sum函數(shù)可以接受一個數(shù)字序列,并返回序列中所有數(shù)字的和。例如,要求序列[1, 2, 3, 4, 5]的和,可以使用以下代碼:
numbers = [1, 2, 3, 4, 5]
sum = sum(numbers)
綜上,要求a到b之間所有奇數(shù)的和,可以使用如下代碼:
def is_odd(x):
return x % 2 != 0
def odd_sum(a, b):
numbers = range(a, b+1)
odd_numbers = filter(is_odd, numbers)
return sum(odd_numbers)
示例:
# 求1到10之間所有奇數(shù)的和
odd_sum(1, 10) # 返回25,因?yàn)?+3+5+7+9
def test(n):
d={'odd':0,'even':0}
if isinstance(int(n),int):
for x in str(n):
if int(x)%2==0:
d['even']+=1
else:
d['odd']+=1
return d
n=input('請輸入正整數(shù):')
print(test(n))