python 對列表排序之高階模組natsort

2021-09-25 02:21:09 字數 1883 閱讀 3310

三、英文小寫(單個大寫也一樣)+ 數字

三、英文大小寫 +數字

這個模組對英文和數字都有很好的效果。

如果是window系統直接cmd中,直接命令安裝就行

pip install natsort
這種使用python list的sort 方法,也能達到對數字排序的效果。

ret1 = ['1', '1000', '10660', '1000', '11', '102', '10039999', ]

ret2 = [int(i) for i in ret1]

ret2.sort()

ret3 = [str(i) for i in ret2]

print(ret3)

# ['1', '11', '102', '1000', '1000', '10660', '10039999']

方法1:

from natsort import natsort_keygen

ret = ['1', '1000', '10660', '1000', '11', '102', '10039999', ]

natsort_key = natsort_keygen()

ret_list = sorted(ret, key=natsort_key)

print("ret_list",ret_list)

# ret_list ['1', '11', '102', '1000', '1000', '10660', '10039999']

方法2

from natsort import natsorted

ret1 = ['1', '1000', '10660', '1000', '11', '102', '10039999', ]

ret2 = natsorted(ret1)

print(ret2)

from natsort import natsort_keygen,natsorted

a = ['2 ft 7 in', '1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '7 ft 6 in']

natsort_key = natsort_keygen()

ret_list = sorted(a, key=natsort_key)

print("ret_list2",ret_list)

ret_list = natsorted(a)

print("ret_list3",ret_list)

# 結果

# ret_list2 ['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']

# ret_list3 ['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']

通過下面的**和結果對比可以發現,如果想在排序不區分英文大小寫,需要在

natsorted模組函式裡面加個引數alg=ns.real | ns.locale | ns.ignorecase,預設情況下是區分大小寫進行排序的。

from natsort import natsorted,ns

ret2a = natsorted(a)

print("ret2a1",ret2a)

ret3 = natsorted(a, alg=ns.real | ns.locale | ns.ignorecase)

print("ret3",ret3)

# 結果:

Python之高階函式

一 什麼是高階函式 函式作為實參傳遞給函式的或者函式名為返回值的函式稱為高階函式。1 實參傳遞給函式 2 函式名為返回值 二 系統內建的高階函式 1 map函式 至少需要兩個引數,第乙個引數是函式名,第二個引數是序列 str,list,tuple map功能 把序列中的每乙個元素作為引數,傳給函式進...

Python之高階程式設計

1 給class繫結屬性 方便所有物件使用 2 使用 slote 變數 限制繫結屬性 slots name age 用tuple定義允許繫結的屬性名稱 子類例項允許定義的屬性就是自身的 slots 加上父類的 slots 3 property class student object propert...

Python之高階函式

做過swift開發的童鞋都知道,在swift中有許多的高階函式 map,filter,reduce,zip等 這些在開發中讓我們節省大量 python中同樣有許多的內建函式,但是這裡也只介紹幾個常用的高階函式 根據提供的函式對指定序列做對映,並返回對映後的序列 map function,iterab...