Python列表排序方法匯總,超詳細!


1. 修改原列表,不創建新列表的排序

1 a = [3, 2, 8, 4, 6]
2 print(id(a))  # 2180873605704
3 a.sort()  # 默認升序
4 print(a)  # [2, 3, 4, 6, 8]
5 print(id(a))  # 2180873605704
6 
7 a.sort(reverse=True)
8 print(a)  # [8, 6, 4, 3, 2]

 

1 # 將序列的所有元素隨機排序
2 import random
3 b = [3, 2, 8, 4, 6]
4 random.shuffle(b)
5 print(b)  # [4, 3, 6, 2, 8]

2. 創建新列表的排序

通過內置函數sorted()進行排序,這個方法返回新列表,不對原列表做修改。

1 a = [3, 2, 8, 4, 6]
2 b = sorted(a)  # 默認升序
3 c = sorted(a, reverse=True)  # 降序
4 print(b)  # [2, 3, 4, 6, 8]
5 print(c)  # [8, 6, 4, 3, 2]

3. 冒泡排序

 1 list1 = [34,54,6,5,65,100,4,19,50,3]
 2 
 3 #冒泡排序,以升序為例
 4 
 5 #外層循環:控制比較的輪數
 6 for i in range(len(list1) - 1):
 7     #內層循環:控制每一輪比較的次數,兼顧參與比較的下標
 8     for j in range(len(list1) - 1 - i):
 9         #比較:只要符合條件則交換位置,
10         # 如果下標小的元素 > 下標大的元素,則交換位置
11         if list1[j] < list1[j + 1]:
12             list1[j],list1[j + 1] = list1[j + 1],list1[j]
13 print(list1)

4. 選擇排序

 1 li = [17, 4, 77, 2, 32, 56, 23]
 2 
 3 # 外層循環:控制比較的輪數
 4 for i in range(len(li) - 1):
 5     # 內層循環:控制每一輪比較的次數
 6     for j in range(i + 1, len(li)):
 7         # 如果下標小的元素>下標大的元素,則交換位置
 8         if li[i] > li[j]:
 9             li[i], li[j] = li[j], li[i]
10 print(li)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM