python中sorted的用法append_Python中高阶函数sorted()用法
在Python中,有內置的排序方法:sorted(iterable, key, reverse)。
Sorted()函數也是一個高階函數,它還可以接收一個key函數來實現自定義的排序。key指定的函數將作用于list的每一個元素上,并根據key函數返回的結果進行排序。
print(sorted([1,34,-5,55,-100,12]))
直接像上面對數字進行的排序,得到的結果為下面:
[-100, -5, 1, 12, 34, 55]
這是對簡單的排序,但是如果按照絕對值進行排序,就可以利用key
print(sorted([1,34,-5,55,-100,12],key=abs))
加上key,按照絕對值進行排序,得到的結果如下所示:
[1, -5, 12, 34, 55, -100]
這是對key的簡單利用,當然我們還能夠自己定義函數來排序。
def ad(x):
return x*(-1)
print(sorted([1,34,-5,55,-100,12],key=ad))
如上定義了一個函數ad(),這個函數就是取反,按照取反之后的結果進行排序,得到下面的結果:
[55, 34, 12, 1, -5, -100]
這也是對key的簡單運用,通過自己定義函數的方法。
sorted()除了對純數字進行排序以外,還能夠對字符串進行排序,按照ASCII的順序進行排序
print(sorted(['as','xp','junjun','XX','zp','www','+']))
print(sorted(['as','xp','junjun','XX','zp','www','+'],key=str.lower))
print(sorted(['as','xp','junjun','XX','zp','www','+'],key=str.lower,reverse=True))
如上為對字符串進行排序,如下為結果:
['+', 'XX', 'as', 'junjun', 'www', 'xp', 'zp']
['+', 'as', 'junjun', 'www', 'xp', 'XX', 'zp']
['zp', 'XX', 'xp', 'www', 'junjun', 'as', '+']
通過對比,可以發現,先特殊字符,再大寫字母,再小寫字母。如果加上key=str.lower來排序,所排序出來的字符串不區分大小寫。若加上reverse=True,則是按照相反的順序來排序。
練習:假設我們用一組tuple表示學生名字和成績:
L = [('Bob',75),('Adam',92),('Xp',100),('Junjun',1)]
請用sorted()對上述列表分別按名字和成績排序:
#按照名字排序
def by_name(t):
return t[0].lower()
#按照成績排序
def by_score(t):
return t[1]
L = [('Bob',75),('Adam',92),('Xp',100),('Junjun',1)]
L2 = sorted(L, key = by_name)
print(L2)
L3 = sorted(L, key = by_score)
print(L3)
上面練習的結果為:
[('Adam', 92), ('Bob', 75), ('Junjun', 1), ('Xp', 100)]
[('Junjun', 1), ('Bob', 75), ('Adam', 92), ('Xp', 100)]
【分析】
L列表中的每個元素都是一個元組,首先按名字排序,key作用與排序中列表里的每一個元素,所以傳入by_name里的參數t是一個元組,需要對元組的第一個元素進行排序,所以是t[0]。所以說他[0]就是元組的第一個字段name,而相應的t[1]就是元組的第二個字段score。
python中高階函數與裝飾器
高階函數的定義:傳入參數有函數名或者返回值有內置函數名的函數. 最簡單的高階函數: def add(x, y, f):??? return f(x) + f(y) add(-5, 6, abs) 常用 ...
python高階函數sorted
原文 排序也是在程序中經常用到的算法.無論使用冒泡排序還是快速排序,排序的核心是比較兩個元素的大小.如果是數字,我們可以直接比較,但如果是字符串或者兩個dict呢?直接比較數學上的大小是沒有意義的,因 ...
python高階函數——sorted排序算法
python 內置的sorted()函數可以對一個list進行排序: >>> sorted([8,3,8,11,-2]) [-2, 3, 8, 8, 11] 既然說是高階函數,那么它 ...
Python中高階函數講解
高階函數講解 1. 常規高階函數 遞歸函數 格式:def func_name(variable): '''__doc__'''#函數的說明文檔 if 條件表達式:#限制遞歸退出值 pass retur ...
python中高階函數學習筆記
什么是高階函數 變量可以指向函數,函數的參數能接收變量,那么一個函數就可以接收另一個函數作為參數,這種函數就稱之為高階函數 def fun(x, y, f): print f(x), f(y) fun ...
python中高階函數與裝飾器(3)
>>> f = lambda x: x * x>>> f at 0x101c6ef28> >> ...
python中高階函數與裝飾器(2)
函數返回值為內置函數名: def sum(*args):??? def sum_in():??????? ax = 0??????? for n in args:??????????? ax = ax ...
Python 內置函數sorted()在高級用法
對于Python內置函數sorted(),先拿來跟list(列表)中的成員函數list.sort()進行下對比.在本質上,list的排序和內建函數sorted的排序是差不多的,連參數都基本上是一樣的. ...
python高階函數的使用
目錄 python高階函數的使用 1.map 2.reduce 3.filter 4.sorted 5.小結 python高階函數的使用 1.map Python內建了map()函數,map()函數接 ...
隨機推薦
ORM框架示例及查詢測試,上首頁修改版(11種框架)
繼上次ORM之殤,我們需要什么樣的ORM框架? 整理了11個ORM框架測試示例,通過示例代碼和結果,能很容易了解各種框架的特性,優缺點,排名不分先后 EF PDF XCODE CRL NHiberna ...
具體解釋coredump
一,什么是coredump 我們常常聽到大家說到程序core掉了,須要定位解決,這里說的大部分是指相應程序因為各種異常或者bug導致在執行過程中異常退出或者中止,而且在滿足一定條件下(這里為什么說須要 ...
windows7 安裝python
首先去Python官網,https://www.python.org 找到downloads,我這里系統是win7 x64,下載的是最新版本3.4.2 下載完成后有個msi文件,選擇文件安裝目錄,一路 ...
mysql用戶權限分配專欄
00x1創建新用戶 通過root用戶登錄之后創建 創建新用戶,用戶名為testuser,密碼為123456 : 1 grant all privileges?on?*.* to testuser@lo ...
import this
import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than ...
指定nginx某個目錄顯示目錄結構
1.修改配置文件/usr/local/nginx/conf/nginx.conf 指定目錄,開啟autoindex為on. location /study { autoindex on; } 2. 保 ...
C++中explicit的用法
https://blog.csdn.net/qq_35524916/article/details/58178072 https://blog.csdn.net/jinjin1062495199/ar ...
Entity Framework——讀寫分離
1 實現 CustomDbContext擴展了DbContext,其構造函數帶有形式參nameOrConnectionString,可以在使用CustomDbContext時指定數據庫連接字符串. D ...
java得到當前時間
SimpleDateFormat timeformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date ...
UART驅動分析
在linux用戶層上要操作底層串口需要對/dev/ttySxxx操作,這里的ttySx指實際的終端串口. 以下以全志A64為實例,分析UART驅動以及淺談TTY架構. linux-3.10/drive ...
總結
以上是生活随笔為你收集整理的python中sorted的用法append_Python中高阶函数sorted()用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 何小鹏称王传福有带头大哥风范 小鹏会继续
- 下一篇: python变量持久化_Python 数