Python中的sorted函數(shù)應(yīng)用及文件操作詳解
Python的sorted函數(shù)及文件操作
眾所周知,def __cmp__ 作為方法存在,用sort對(duì)實(shí)例進(jìn)行排序時(shí),會(huì)用到class 中的__cmp__。但是,在python3中,取消了 sorted對(duì)cmp的支持。
python3 中有關(guān)排序的sorted方法如下:
sorted(iterable,key=None,reverse=False)
其中,key 接受一個(gè)函數(shù),這個(gè)函數(shù)只接受一個(gè)元素,默認(rèn)為 None。
reverse是一個(gè)布爾值。如果設(shè)置為 True,列表元素將被倒序排列,默認(rèn)為 False。
下面著重介紹 key 的作用原理:key 指定一個(gè)接收一個(gè)參數(shù)的函數(shù),這個(gè)函數(shù)用于從每個(gè)元素中提取一個(gè)用于比較的關(guān)鍵字。默認(rèn)值為 None 。
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave','B', 10)] sorted(students,key=lambda s: x[2]) #按照年齡來(lái)排序
結(jié)果:
[('dave','B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
這是一個(gè)字符串排序,排序規(guī)則:小寫(xiě)<大寫(xiě)<奇數(shù)<偶數(shù)
s = 'asdf234GDSdsf23'
原理:先比較元組的第一個(gè)值,如果相等就比較元組的下一個(gè)值,以此類(lèi)推。
先看一下 Boolean value 的排序:print(sorted([True,Flase]))===>結(jié)果[False,True]
Boolean 的排序會(huì)將 False 排在前,True 排在后。
- x.isdigit()的作用是把數(shù)字放在前邊,字母放在后邊.
- x.isdigit() and int(x) % 2 == 0 的作用是保證奇數(shù)在前,偶數(shù)在后。
- x.isupper()的作用是在前面基礎(chǔ)上,保證字母小寫(xiě)在前大寫(xiě)在后.
- 最后的 x 表示在前面基礎(chǔ)上,對(duì)所有類(lèi)別數(shù)字或字母排序。
最后結(jié)果:
addffssDGS33224
一道面試題:
list1=[7, -8, 5, 4, 0, -2, -5] #要求1.正數(shù)在前負(fù)數(shù)在后 2.正數(shù)從小到大 3.負(fù)數(shù)從大到小 sorted(list1,key=lambda x:(x<0,abs(x)))
解題思路:先按照正負(fù)排先后,再按照大小排先后。
Python下文件操作與Java差不多。打開(kāi)文件的模式有三種:
- r,只讀模式(默認(rèn))。
- w,只寫(xiě)模式?!静豢勺x;不存在則創(chuàng)建;存在則刪除內(nèi)容;因?yàn)闀?huì)清空原有文件的內(nèi)容,一定要慎用】
- a,追加模式?!究勺x; 不存在則創(chuàng)建;存在則只追加內(nèi)容;】
注意最后要記得關(guān)閉文件:f.close()
python只能將字符串寫(xiě)入到文本文件。要將數(shù)值數(shù)據(jù)存儲(chǔ)到文本本件中,必須先試用函數(shù)str()將其轉(zhuǎn)換為字符串格式。
#r模式(只讀模式) f = open('yesterday',encoding='utf-8') data = f.read() f.close() print(data) #只讀文件的前5行: f = open('yesterday','r',encoding='utf-8') for i in range(5): print(f.readline()) #以列表的方式讀取這個(gè)文件 f = open('yesterday','r',encoding='utf-8') for line in f.readlines(): print(line) #對(duì)文件的第3行,做一個(gè)特殊的打?。ㄟ@種方式比較低效,因?yàn)樗鼤?huì)先把文件全部讀取到內(nèi)存中,文件較大時(shí)會(huì)很影響性能) f = open('yesterday','r',encoding='utf-8') for index,line in enumerate(f.readlines()): if index == 2: print('-----測(cè)試線----',line) continue print(line) #比較高效的,逐行讀取文件內(nèi)容,因?yàn)樗且恍幸恍械娜プx取文件,不會(huì)先把文件一次性全部讀取到內(nèi)存中 f = open('yesterday','r',encoding='utf-8') for line in f: print(line) #比較高效的,對(duì)文件的3三行進(jìn)行過(guò)特殊打印 f = open('yesterday','r',encoding='utf-8') count = 0 for line in f: if count == 2: print('------測(cè)試線----:',line) count += 1 print(line) #w模式(如果沒(méi)有就創(chuàng)建文件,如果有就清空文件,一定要慎用) f = open('yesterday','w',encoding='utf-8') f.write("這就是一行測(cè)試\n") f.write("測(cè)試2\n") f.write("測(cè)試3") #a模式(追加模式,如果沒(méi)有就創(chuàng)建文件,如果有就把內(nèi)容追加進(jìn)去) f = open('yesterday','a',encoding='utf-8') f.write("test1\n") #文件光標(biāo)的操作 f = open('yesterday','r',encoding='utf-8') #獲得文件的光標(biāo) print(f.tell()) print(f.readline()) print(f.tell()) #回到最開(kāi)始的位置(也可以指定一個(gè)位置,前提是你得知道你去往的字符具體在哪個(gè)位置才行) f.seek(0) #顯示文件的編碼 print(f.encoding) #顯示文件句柄的編號(hào)(我并不確定這個(gè)說(shuō)法是否正確,用到時(shí)請(qǐng)仔細(xì)去查一下) print(f.fileno()) #測(cè)試是否是一個(gè)終端設(shè)備文件 print(f.isatty()) #把緩存的內(nèi)容刷新到硬盤(pán)(進(jìn)度條那個(gè)腳本里有寫(xiě)一個(gè)示例) f.flush() #指定文件從哪里開(kāi)始截?cái)?,如果沒(méi)有參數(shù),默認(rèn)從0開(kāi)始等于清空了這個(gè)文件 #f.truncate() #r+ 模式(讀,追加模式) f = open('yesterday','r+',encoding='utf-8') data = f.read() print(data) f.write("test...\n") #還有 w+寫(xiě)讀模式, a+追加讀模式,這一般不用,真用到了再去了解下吧 #rb 模式,以二進(jìn)制的方式讀取這個(gè)文件 #wb 模式,二進(jìn)制寫(xiě) ''' ''' #with語(yǔ)句(很實(shí)用,記得要經(jīng)常用喲~,在《Python編程從入門(mén)到實(shí)戰(zhàn)》那本書(shū)里的文件與異常那一章有詳細(xì)用法) #為了避免打開(kāi)文件后忘記關(guān)閉,可以通過(guò)管理上下文,即: with open('log','r') as f: ... #如此方式,當(dāng)with代碼塊執(zhí)行完畢時(shí),內(nèi)部會(huì)自動(dòng)關(guān)閉并釋放文件資源。 #在Python 2.7 后,with又支持同時(shí)對(duì)多個(gè)文件的上下文進(jìn)行管理,即: with open('log1') as obj1, open('log2') as obj2: pass
到此這篇關(guān)于Python中的sorted函數(shù)應(yīng)用及文件操作詳解的文章就介紹到這了,更多相關(guān)Python的sorted函數(shù)及文件操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解Python?NumPy如何使用argsort方法進(jìn)行排序
- python3中sort和sorted使用與區(qū)別
- Python高級(jí)排序sort()函數(shù)使用技巧實(shí)例探索
- Python中sorted()函數(shù)的強(qiáng)大排序技術(shù)實(shí)例探索
- Python中的sorted函數(shù)使用解析
- Python sort 自定義函數(shù)排序問(wèn)題
- Python排序方法中sort和sorted的區(qū)別詳解
- Python 列表 sort()函數(shù)使用實(shí)例詳解
- Python中sort函數(shù)正則表達(dá)式的使用
相關(guān)文章
Python函數(shù)的定義與調(diào)用方法實(shí)例
Python 中函數(shù)的應(yīng)用非常廣泛,函數(shù)是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段,這篇文章主要給大家介紹了關(guān)于Python函數(shù)的定義與調(diào)用的相關(guān)資料,需要的朋友可以參考下2023-06-06Django REST Framework 分頁(yè)(Pagination)詳解
這篇文章主要介紹了Django REST Framework 分頁(yè)(Pagination)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11插入排序_Python與PHP的實(shí)現(xiàn)版(推薦)
下面小編就為大家?guī)?lái)一篇插入排序_Python與PHP的實(shí)現(xiàn)版(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05OpenCV圖像縮放之cv.resize()函數(shù)詳解
resize函數(shù)opencv中專(zhuān)門(mén)用來(lái)調(diào)整圖像大小的函數(shù),下面這篇文章主要給大家介紹了關(guān)于OpenCV圖像縮放之cv.resize()函數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09將Django項(xiàng)目部署到CentOs服務(wù)器中
今天小編就為大家分享一篇關(guān)于將Django項(xiàng)目部署到CentOs服務(wù)器中的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10在PyTorch中實(shí)現(xiàn)可解釋的神經(jīng)網(wǎng)絡(luò)模型的方法詳解
這篇文章主要為大家介紹在PyTorch如何中實(shí)現(xiàn)可解釋的神經(jīng)網(wǎng)絡(luò)模型,并為您提供使用簡(jiǎn)單的 PyTorch 接口實(shí)現(xiàn)最先進(jìn)的基于概念的模型的工具,需要的朋友可以參考下2023-06-06Python+wxPython實(shí)現(xiàn)文件名批量處理
在日常的文件管理中,我們經(jīng)常需要對(duì)文件進(jìn)行批量處理以符合特定的命名規(guī)則或需求,本文主要介紹了如何使用wxPython進(jìn)行文件夾中文件名的批量處理,需要的可以參考下2024-04-04