---
# System prepended metadata

title: 6-3 串列的排序
tags: [chapter 6, Python]

---

###### tags: `chapter 6` `Python`
# 6-3 串列的排序 #
串列排序通常用在數值資料，但字串資料也是可以進行排序的，其排序的依據是按照每一個字元的ASCII碼做排序，排序的方式有很多種，但為了講求寫程式時的便利性，我們會直接呼叫python的`sort()`函數來幫助我們。

```python=
player = ["Lebron", "Jordan", "Curry", "Giannis", "Howard"]
player.sort()
print(player)

# ['Curry', 'Giannis', 'Howard', 'Jordan', 'Lebron']
```
```python=
score = [90, 70, 80, 30, 50]
score.sort()
print(score)

# [30, 50, 70, 80, 90]
```

## 暫時性排序 ##
`sort()`函數會永久的排序資料，也就是說資料無法回去到未排序的狀態，如果想要讓資料在輸出排序後的結果之後返回到原本的狀態，可以使用`sorted()`

```python=
score = [90, 70, 80, 30, 50]
print(sorted(score))
print(score)

# [30, 50, 70, 80, 90]
# [90, 70, 80, 30, 50]
```

## 排序反轉 ##
排序的時候通常是由小排到大，如果遇到需要大到小的排序時你可以使用`reverse()`函數，這個函數不是只有排序後的資料可以使用，如果今天無聊想把隨便一個串列反轉，也是可以的。此外，`sort()`和`sorted()`本身就有內建`reverse`的參數，只要設為`TRUE`就可以囉！不用多呼叫一次`reverse()`。
```python=
score = [90 , 70 , 80 , 30 , 50]
score.sort()
print(score)
score.sort(reverse=True)
print(score)

# [30, 50, 70, 80, 90]
# [90, 80, 70, 50, 30]
```