iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
0
Software Development

從零開始的Python練成記系列 第 8

[Day 8]這麼棒的功能我怎麼不知道:Sort方法

  • 分享至 

  • xImage
  •  

每每在進行資料整理的時候,曾經接觸過的Java都會需要再額外透過演算法的建立來進行資料篩選、分類與排序,做到這件事情的時候就真的是讓自己腦袋連同肝一起爆炸的東西,可是,在我接觸/學習Python的這幾天下來,我發現了神奇的Sort方法,雖然說這個方法只能針對數字與英文資料進行分類排序,但是這就已經比Java還要好太多了,那就廢話不多說,準備進到實際運用吧

那就先假設一個存放多筆浮點數的陣列,然後資料還沒有經過排序,陣列如下方所示:

db_float = {4.93, 12.992, 0.97, -2.85337, 3.14159, 21.92}

就先直接進到Python的實際運用吧:

db_float = [4.93, 12.992, 0.97, -2.85337, 3.14159, 21.92]
print(db_float)
#若是直接使用print方法,那麼結果就跟原始存放的順序一樣
db_float.sort()
#針對Python的陣列,在陣列的建構值後面加上".sort"就可以進行排序
#而系統預設是資料開頭的字元大小(由A~Z,a~z),或數字由小到大(含負數)進行排序
print(db_float)

就來看看系統輸出的結果是怎樣

[4.93, 12.992, 0.97, -2.85337, 3.14159, 21.92]
[-2.85337, 0.97, 3.14159, 4.93, 12.992, 21.92]

由此可知,Python有預設這個功能來對陣列裡面的資料進行排序 (這麼好的方法怎麼不也在Java來一套) ,可以比較方便做資料的管理,也不太需要單純為了排序而特地寫一套演算法;除此之外,其實在Sort方法裡面還有兩個很常用的功能,就像是keyreverse,而這兩個功能分別代表什麼呢,就換個例子來運用吧:

db_string = ["Showcase", "Police", "thief", "arrest"]
print(db_string)  #先印出原始的陣列排序
db_string.sort()
print(db_string)  #印一個經過基本排序的陣列
db_string.sort(reverse=True) #reverse=True 所以就要把順序顛倒過來
print(db_string)  #這時候印出來的就會是顛倒順序的陣列
def string_len(x):
    return len(x) #在這裡建立一個方法來作為回傳字串的長度
db_string.sort(key=string_len) #套用回傳長度的方法,就會依照字串的長短來排序(預設由小到大)
print(db_string)
db_string.sort(reverse=True, key=string_len) #當然,也可以合併在一起用
print(db_string) #輸出結果就會是以字串長短排序,而且是由大到小來排序

一樣,來看看輸出結果如何

['Showcase', 'Police', 'thief', 'arrest'] #原始
['Police', 'Showcase', 'arrest', 'thief'] #以字首排序
['thief', 'arrest', 'Showcase', 'Police'] #以字首顛倒排序
['thief', 'arrest', 'Police', 'Showcase'] #以字串長度排序
['Showcase', 'arrest', 'Police', 'thief'] #以字串長度顛倒排序

好睏.....


上一篇
[Day 7]不想重複寫一樣的運算式:建立方法吧
下一篇
[Day 9]不是不習慣,是這個工具太人性化
系列文
從零開始的Python練成記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言