Python 日常使用記錄

2021-09-25 08:47:52 字數 3473 閱讀 1535

python的排序函式sort,sorted在列表排序和字典排序中的應用詳解和舉例,python 列表list中內建了乙個十分有用的排序函式sort,sorted,它可以用於列表的排序,以下是例子。

a = [5,2,1,9,6]        

>>> sorted(a) #將a從小到大排序,不影響a本身結構

[1, 2, 5, 6, 9]

>>> sorted(a,reverse = true) #將a從大到小排序,不影響a本身結構

[9, 6, 5, 2, 1]

>>> a.sort() #將a從小到大排序,影響a本身結構

>>> a

[1, 2, 5, 6, 9]

>>> a.sort(reverse = true) #將a從大到小排序,影響a本身結構

>>> a

[9, 6, 5, 2, 1]

注意,a.sort() 已改變其結構,b = a.sort() 是錯誤的寫法!

>>> b = ['aa','bb','bb','zz','cc']

>>> sorted(b)

['bb', 'cc', 'aa', 'bb', 'zz'] #按列表中元素每個字母的ascii碼從小到大排序,如果要從大到小,請用sorted(b,reverse=true)下同

>>> c =['ccc', 'bb', 'ffff', 'z']

>>> sorted(c,key=len) #按列表的元素的長度排序

['z', 'bb', 'ccc', 'ffff']

>>> d =['ccc', 'bb', 'ffff', 'z']

>>> sorted(d,key = str.lower ) #將列表中的每個元素變為小寫,再按每個元素中的每個字母的ascii碼從小到大排序

['bb', 'ccc', 'ffff', 'z']

>>> def lastchar(s):

return s[-1]

>>> e = ['abc','b','aaz','ef']

>>> sorted(e,key = lastchar) #自定義函式排序,lastchar為函式名,這個函式返回列表e中每個元素的最後乙個字母

['b', 'abc', 'ef', 'aaz'] #sorted(e,key=lastchar)作用就是 按列表e中每個元素的最後乙個字母的ascii碼從小到大排序

>>> f = [,,] #列表中的元素為字典

>>> def age(s):

return s['age']

>>> ff = sorted(f,key = age) #自定義函式按列表f中字典的age從小到大排序

[, , ]

>>> f2 = sorted(f,key = lambda x:x['age']) #如果覺得上面定義乙個函式**不美觀,可以用lambda的形式來定義函式,效果同上

對於lambda的使用,如對於以上示例中的字典[key,value]可以採用:

sorted(f,key = lambda x:x['age'])
而對於非字典的[key,value] set結構來說:

db = [[10,20,'t'],[{]12,3,'s'],[8,10,'s']]

db = sorted(db,key = lambda x : x[0], reverse=true)

實現了按照第乙個數值進行降序排列功能,同時改變了資料集db。

批量重新命名資料夾注意:

import os

path = 'c:\\users\\jiache\\documents\\datatang\\final_orgnized_zipped_files\\batch_6'

dirs =

for dirpath, dirnames, filenames in os.walk(path, topdown=false):

for filepath in dirnames:

olddir = os.path.join(dirpath, filepath)

oldname = filepath

newname = oldname.replace(' ', '_')

newdir = os.path.join(dirpath, newname)

os.rename(olddir, newdir)

print('renamed from ' + olddir + ' ====> ' + newdir)

讀取二進位制檔案並且將數值存出:

def convert(path_in, path_out):

i = 0

f = open(path_in, 'rb')

f2 = open(path_out, 'w')

records = iter(partial(f.read, 2), b'') # 每次2位元組

for r in records:

j = 0

r_int = int.from_bytes(r, byteorder='little') # 將 byte轉化為 int

i += 1

f2.write(str(r_int) + ' ')

if i % 172 == 0:

f2.write('\n')

f.close()

f2.close()

其中涉及python中int.from_bytes的轉換,舉例說明:

s= b'\xf1\xff'

########################

print(int.from_bytes(s, byteorder='little', signed=true))

>>> -15

print(int.from_bytes(s, byteorder='big', signed=false))

>>> 61951

s_ = b'\xff\xf1'

print(int.from_bytes(s_, byteorder='little', signed=false))

>>> 61951

『\x』表示十六進製制數,由於s的高低位標誌是』little』,即』f1』是低位,『ff』是高位,所以s的順序應該是』fff1』,二進位制表示為1111 1111 1111 0001.

同時要考慮符號位,第一位是1,所以s是負數,要進行取反加一才是正確的十進位制數(第一位符號位的1不變),可以得到10000000 00001111,寫成十進位制,就是-15。上面的例子中,如果signed=false,則無符號位;若byteorder=『big』,則輸入s的左邊是高位,右邊是低位。

python日常時間記錄

看了 奇特的人生 後想試試裡邊柳比歇夫的辦法記錄下時間,看看能不能多把握點時間的下腳料 我的文字使用子彈簡訊記錄的,然後把再拷貝到電腦上。格式是 事項 num 分鐘 如 奇葩說 120分鐘 coding gbk from pyecharts import pie defbuild lists a d...

IDEA日常使用記錄

點它即可,或者更改使用的快捷鍵 ctrl f9 1.快速生成for迴圈語句 for i 2.檢視類的繼承關係 ctrl h 3.引數資訊 ctrl p 4.檢視方法資訊 ctrl q 5.選中你想要的類 ctrl tab 6.跳轉到那一行 ctrl g 7.查詢 替換 ctrl f,ctrl r 8...

Linux日常命令使用記錄

scp在跨機器複製的時候為了提高資料的安全性,使用了ssh連線和加密方式,如果機器之間配置了ssh免密碼登入,那在使用scp的時候密碼都不用輸入。在伺服器104.238.161.75上操作,將伺服器104.238.161.75上 home lk 目錄下所有的檔案全部複製到43.224.34.73的 ...