iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
自我挑戰組

Python 學習整理系列 第 16

Day16. Python 排序

  • 分享至 

  • xImage
  •  

重點:

  • 將串列按大小排順序
  • 按照自訂的排序規則排列串列內的資料

為什麼要學排序:

  • 更有效率地處理資料
  • 透過客製化排序方式,讓串列內的資料可以依照需求使用

排序的使用方式

用法:
sorted(串列)

  • sorted 會將串列由小到大排列 :

    • 字串會依照字元的排列順序 : A → Z → a → z
    • 整數、浮點數會依照數值大小排列
  • 串列裡面的資料必須都是相同資料型態才能進行排序

  • 排序後會產生一個新的字串,不會更改原始的字串

  • sort v.s sorted

    • sort 會直接更改原本的串列,而 sorted 不會

例1. sort v.s. sorted

shoppingCart = ['juice', 'book', 'apple']

shoppingCart.sort()

print(shoppingCart)
# ['apple', 'book', 'juice']

shoppingCart = ['juice', 'book', 'apple']

sorted_shoppingCart = sorted(shoppingCart)

print(sorted_shoppingCart)
# ['apple', 'book', 'juice']

print(shoppingCart)
# ['juice', 'book', 'apple']

例2.

score = [55, 1, 15, 60, 99, 47, 32]
sorted_score = sorted(score)
print(sorted_score)
# [1, 15, 32, 47, 55, 60, 99]

database = ['six', '15', '9']
sorted_database = sorted(database)
print(sorted_database)
# ['15', '9', 'six']
# 因為數字小於英文字母,字串中 1 小於 9,所以 15 優先於 9

更多的排序的使用方式 - reverse

用法:
sorted ( 串列, reverse = True / False )

  • reverse 的預設值為 False ,資料會由小至大排列
  • 若將 reverse 設定為 True ,資料則會由大至小排列

例1.

shoppingCart = ['apple', 'juice', 'book']
sorted_shoppingCart = sorted(shoppingCart)
reverse_sorted_shoppingCart = sorted(shoppingCart, reverse=True)
print(sorted_shoppingCart, reverse_sorted_shoppingCart, sep='\n')
# ['apple', 'book', 'juice']
# ['juice', 'book', 'apple']

更多排序的使用方式 - key

用法:

sorted ( 串列, key = 排序規則 )

  • 在 python 的預設裡,是以字串的字母順序或數值的大小進行排序
  • 可以利用 key 更改排序規則,常用的排序規則有 :
    • len
    • 自訂的函式

例1.

shoppingCart = ['apple', 'juice', 'book', 'egg', 'elephant', 'addidas']
sorted_shoppingCart = sorted(shoppingCart, key=len)
reverse_sorted_shoppingCart = sorted(shoppingCart, reverse=True, key=len)
print(sorted_shoppingCart, reverse_sorted_shoppingCart, sep='\n')
# ['egg', 'book', 'apple', 'juice', 'addidas', 'elephant']
# ['elephant', 'addidas', 'apple', 'juice', 'book', 'egg']

例2.

def second(i):
    return i[1]


data = ['fish', 'head', 'cake']

data = sorted(data, key=second)

print(data)
# ['cake', 'head', 'fish']

重點整理:

  • sorted ( 串列, reverse = True / False , key = 排序條件 )
    • reverse 的預設為 False,會將串列內的資料由小到大排列
    • 當 reverse 設定為 True 時,會將串列內的資料由大而小排列
    • 排列的預設規則為字典序以及數值大小,可用 key 更改排列條件 :
      • 使用 len 作為排序條件
      • 自創函式客製化排序條件

參考資料:
Yes


上一篇
Day15. Python 函式
下一篇
Day17. Python 迴圈
系列文
Python 學習整理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言