摘要:我們用函數對序列求最值的想法建立在冒泡排序的算法上。在此基礎上,我們再次利用冒泡排序的算法,對整個列表進行排序。
??在一般將Python的reduce函數的例子中,通常都是拿列表求和來作為例子。那么,是否還有其他例子呢?
??本次分享將講述如何利用Python中的reduce函數對序列求最值以及排序。
??我們用reduce函數對序列求最值的想法建立在冒泡排序的算法上。先上例子?
from functools import reduce from random import randint A = [randint(1, 100) for _ in range(10)] print("The origin list A is %s"%A) f = lambda x,y: x if x>y else y print("max of list A is %s."%reduce(f,A)) print(reduce(f, A) == max(A))
在上述代碼中,列表A是一個含有10個元素的列表,里面的元素是1到100內的隨機整數。f是lambda函數,用于求兩個數的最大值。根據reduce函數的運行原理,reduce(f, A)先會求出A中第一個和第二個元素的最大值,然后將這個最大值與第三個元素比較,返回兩者中的最大值,這個最大值也是前三個元素的最大值,以此類推,我們最后得到的結果reduce(f, A)就是整個列表A中的最大值。
??將上述代碼中的lambda函數中的>號改為<號就能求得A的最小值。
??在此基礎上,我們再次利用冒泡排序的算法,對整個列表進行排序。具體的算法是:先用reduce函數求出整個列表的最大值,再用reduce函數求出整個列表去掉該最大值后的剩下元素中的最大值,以此類推,就能對整個列表進行排序了。代碼如下:
from functools import reduce from random import randint A = [randint(1, 100) for _ in range(10)] print("The origin list A is %s"%A) B = [] while(A): t = reduce(lambda x,y: x if x>y else y, A) B.append(t) A.remove(t) print("The sorted list is %s"%B)
輸出結果如下:
The origin list A is [27, 64, 81, 14, 18, 16, 66, 24, 43, 91]
The sorted list is [91, 81, 66, 64, 43, 27, 24, 18, 16, 14]
??本次分享到此結束,歡迎大家交流~~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41619.html
摘要:高階函數實參是一個函數名函數的返回值是一個函數傳遞的參數包含函數名。內置高階函數函數函數接收兩個參數一個是函數一個是序列將傳入的函數依次作用到序列的每個元素并把結果作為新的返回。 高階函數 實參是一個函數名 函數的返回值是一個函數 print(abs(-10)) f = abs print(f(-10)) #傳遞的參數包含函數名。 def myfun(x,y,fun): ...
摘要:專題系列第八篇,講解多種方式求數組的最大值和最小值前言取出數組中的最大值或者最小值是開發中常見的需求,但你能想出幾種方法來實現這個需求呢提供了函數返回一組數中的最大值,用法是值得注意的是如果有任一參數不能被轉換為數值,則結果為。 JavaScritpt 專題系列第八篇,講解多種方式求數組的最大值和最小值 前言 取出數組中的最大值或者最小值是開發中常見的需求,但你能想出幾種方法來實現這個...
摘要:當到達時等同于直接插入排序,此時序列已基本有序,所有記錄在統一組內排好成有序序列。當面對大量數據時,希爾排序將比直接插入排序更具優勢圖示講解第一趟取增量,所有間隔為的元素分在一組,在各個組中分別進行直接插入排序。 ...
摘要:會依次將中的數據傳遞到中,根據返回的或者,留下或者拋棄這個值。而對于字符串,則是根據字符串對應的碼表進行排序。同時也是一個高階函數,可以實現自定義的排序方式。 map/reduce是一種編程思想,在各個領域都有它的實踐。網上有一個簡單的例子解釋map/reduce。比如說你需要數一下某一個圖書館中有多少本藏書。最傻瓜的做法就是排一個人從頭數到尾。這樣速度慢,低效。另一種方法就是先將圖書...
閱讀 2647·2019-08-30 15:52
閱讀 3594·2019-08-29 17:02
閱讀 1843·2019-08-29 13:00
閱讀 918·2019-08-29 11:07
閱讀 3235·2019-08-27 10:53
閱讀 1767·2019-08-26 13:43
閱讀 1011·2019-08-26 10:22
閱讀 1323·2019-08-23 18:06